List汎用カスタムタイプソートとサイズ比較java版
3251 ワード
今日は退屈で、重複ファイル削除ツールをjavaで実現しました.
明らかにjavaの下の仕事量は上がって、Directoryは意外にもすべてなくて、汗、ファイル名のあいまいな検索.....自分で书いてあるいはネット上で写します
JAVAのListカスタムソート
よびだし
他にもC#と変わらないし、NetBeansはswingをするのが本当に便利で、.netと大きく違いません.
注意:好奇心を持って2つのソフトウェアの上で性能をテストして、どうしてC#はjavaよりずっと速いですか?C#の時間はjava 1つのゼロしかかかりませんか?まさかjavaが自分で作ったあいまいな検索効率は.netの下でFileInfo、DirectoryInfoのあれらの既成の方法よりずっと悪いです.....
明らかに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のあれらの既成の方法よりずっと悪いです.....