字符串 数组排序问题 求教 字符串数组排序 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 想死的心都有了;用compareTo() 冒泡排了一下和sort结果一样;windows 这按名称 递增 到底 什么排序方式啊? 需要写一个比较器实现windows的排序算法,具体不清楚,但大概应该是这个样子的import java.util.Comparator;public class NumberComparator<T extends String> implements Comparator { @Override public int compare(Object o1, Object o2) { String str1 = (String) o1, str2 = (String) o2; char[] arr1 = str1.toCharArray(); char[] arr2 = str2.toCharArray(); int len1 = arr1.length, len2 = arr2.length; int len = len1 < len2 ? len1 : len2; int diff = 0; boolean allIs=false; for (int i = 0; i < len; i++) { boolean is1 = isDigit(arr1[i]); boolean is2 = isDigit(arr2[i]); if (diff == 0) { diff = arr1[i] - arr2[i]; } if (!is1 && !is2) { if (diff != 0) { return diff; } allIs=false; } else if (is1 && is2) { allIs=true; } else if (is1) { if (allIs) { return 1; } return diff; } else if (is2) { if (allIs) { return -1; } return diff; } } if (allIs) { if (len1==len2) { return diff; } return len1 - len2; } return diff; } private boolean isDigit(char c) { return c>='0'&&c<='9'; }}然后 List<String> list=Arrays.asList(pics); list.sort(new NumberComparator<String>()); for (String f : list) { System.out.println(f); } 关于两个变量交换内容的问题 mysql中数据读出来是乱码 java如何实现fft算法 在JAVA中可以播放FLASH吗? 菜鸟提问!有谁用过URLClassLoader? 请问Java Web Start有什么用处? 求一个简单的JAVA编写的词法分析和语法分析的程序的源代码 关于java代码本地化的问题,大家帮忙啊!! 谁能提供一些较好的JAVA资料或下载资料的网站 java虚拟机内存回收 先回收堆,再回收栈???? java问题 关于字符串常量池问题
public class NumberComparator<T extends String> implements Comparator {
@Override
public int compare(Object o1, Object o2) {
String str1 = (String) o1, str2 = (String) o2;
char[] arr1 = str1.toCharArray();
char[] arr2 = str2.toCharArray();
int len1 = arr1.length, len2 = arr2.length;
int len = len1 < len2 ? len1 : len2;
int diff = 0;
boolean allIs=false;
for (int i = 0; i < len; i++) {
boolean is1 = isDigit(arr1[i]);
boolean is2 = isDigit(arr2[i]);
if (diff == 0) {
diff = arr1[i] - arr2[i];
}
if (!is1 && !is2) {
if (diff != 0) {
return diff;
}
allIs=false;
} else if (is1 && is2) {
allIs=true;
} else if (is1) {
if (allIs) {
return 1;
}
return diff;
} else if (is2) {
if (allIs) {
return -1;
}
return diff;
}
}
if (allIs) {
if (len1==len2) {
return diff;
}
return len1 - len2;
}
return diff;
} private boolean isDigit(char c) {
return c>='0'&&c<='9';
}
}然后 List<String> list=Arrays.asList(pics);
list.sort(new NumberComparator<String>());
for (String f : list) {
System.out.println(f);
}