List汎用カスタムタイプソートとサイズ比較java版

3251 ワード

今日は退屈で、重複ファイル削除ツールをjavaで実現しました.
明らかにjavaの下の仕事量は上がって、Directoryは意外にもすべてなくて、汗、ファイル名のあいまいな検索.....自分で书いてあるいはネット上で写します
 /**
     * JAVA        
     *
     * @param pattern      
     * @param str        
     * @return        true,    false
     */
    private static boolean FileMatch(String pattern, String str) {
        int patternLength = pattern.length();
        int strLength = str.length();
        int strIndex = 0;
        char ch;
        for (int patternIndex = 0; patternIndex < patternLength; patternIndex++) {
            ch = pattern.charAt(patternIndex);
            if (ch == '*') {
                //     *            
                while (strIndex < strLength) {
                    if (FileMatch(pattern.substring(patternIndex + 1),
                            str.substring(strIndex))) {
                        return true;
                    }
                    strIndex++;
                }
            } else if (ch == '?') {
                //     ?          
                strIndex++;
                if (strIndex > strLength) {
                    //  str         ? 。
                    return false;
                }
            } else {
                if ((strIndex >= strLength) || (ch != str.charAt(strIndex))) {
                    return false;
                }
                strIndex++;
            }
        }
        return (strIndex == strLength);
    }
public class Directory {

    private String path;

    /**
     *     
     *
     * @param dirpath
     */
    public Directory(String dirpath) {
        if (dirpath == null || dirpath.length() < 1) {
            return;
        }
        this.path = dirpath;
    }
/**
     *                 
     *
     * @param filePattern
     * @return
     */
    public List getAllFiles(String filePattern) {
        if (tmpPath == null) {
            tmpPath = path;
        }
        File file = new File(tmpPath);
        File[] files = file.listFiles();
        for (int i = 0; i < files.length; i++) {
            if (files[i].exists()) {
                if (files[i].isFile()) {
                    if (FileMatch(filePattern, files[i].getName())) {
                        fileList.add(files[i]);
                    }
                } else if (files[i].isDirectory()) {
                    tmpPath = files[i].getPath();
                    getAllFiles(filePattern);
                }
            }
        }
        return fileList;
    }
}

JAVAのListカスタムソート
public class ComparatorFileSize implements Comparator {

    @Override
    public int compare(FileSort x, FileSort y) {
        if (x.getFileSize() > y.getFileSize()) {
            return 1;
        } else if (x.getFileSize() == y.getFileSize()) {
            return 0;
        } else {
            return -1;
        }
    }

よびだし
Collections.sort(sortList, new ComparatorFileSize());

他にもC#と変わらないし、NetBeansはswingをするのが本当に便利で、.netと大きく違いません.   
注意:好奇心を持って2つのソフトウェアの上で性能をテストして、どうしてC#はjavaよりずっと速いですか?C#の時間はjava 1つのゼロしかかかりませんか?まさかjavaが自分で作ったあいまいな検索効率は.netの下でFileInfo、DirectoryInfoのあれらの既成の方法よりずっと悪いです.....