http://zhidao.baidu.com/question/38961689
按照这个网页做的排序,后来把代码改了一下。排出来的数据找不到规律。请高手指点一下。import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;public class Sort implements Comparator<String> {
private final static int UP = 1; private final static int DOWM = -1; private int state; public Sort(int state) {
this.state = state;
} public Sort() { } public int compare(String o1, String o2) {
if (state == Sort.DOWM) {
return sortDown(o1, o2);
}
return sortUp(o1, o2);
} private int sortUp(String o1, String o2) {
if (o1.compareTo(o2) < 0) {
return -1;
} else if (o1.compareTo(o2) > 0) {
return 1;
} else {
return 0;
}
} private int sortDown(String o1, String o2) {
if (o1.compareTo(o2) > 0) {
return -1;
} else if (o1.compareTo(o2) < 0) {
return 1;
} else {
return 0;
}
} public static void main(String[] args) {
ArrayList<String> array = new ArrayList<String>();
array.add("1892536248");
array.add("8871951");
array.add("1893340281");
array.add("IPCYWD167861");
array.add("1893877377");
array.add("1893877377");
array.add("8870171");
array.add("8674873");
array.add("8871953");
array.add("ADSLD187705");
Collections.sort(array, new Sort(Sort.DOWM)); for (String str : array) {
System.out.println(str);
}
}
}
打印结果:为什么号码不按升序排列呢?也看不出是什么规律来,如果实现升序排列呢,请高手指点!IPCYWD167861
ADSLD187705
8871953
8871951
8870171
8674873
1893877377
1893877377
1893340281
1892536248
按照这个网页做的排序,后来把代码改了一下。排出来的数据找不到规律。请高手指点一下。import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;public class Sort implements Comparator<String> {
private final static int UP = 1; private final static int DOWM = -1; private int state; public Sort(int state) {
this.state = state;
} public Sort() { } public int compare(String o1, String o2) {
if (state == Sort.DOWM) {
return sortDown(o1, o2);
}
return sortUp(o1, o2);
} private int sortUp(String o1, String o2) {
if (o1.compareTo(o2) < 0) {
return -1;
} else if (o1.compareTo(o2) > 0) {
return 1;
} else {
return 0;
}
} private int sortDown(String o1, String o2) {
if (o1.compareTo(o2) > 0) {
return -1;
} else if (o1.compareTo(o2) < 0) {
return 1;
} else {
return 0;
}
} public static void main(String[] args) {
ArrayList<String> array = new ArrayList<String>();
array.add("1892536248");
array.add("8871951");
array.add("1893340281");
array.add("IPCYWD167861");
array.add("1893877377");
array.add("1893877377");
array.add("8870171");
array.add("8674873");
array.add("8871953");
array.add("ADSLD187705");
Collections.sort(array, new Sort(Sort.DOWM)); for (String str : array) {
System.out.println(str);
}
}
}
打印结果:为什么号码不按升序排列呢?也看不出是什么规律来,如果实现升序排列呢,请高手指点!IPCYWD167861
ADSLD187705
8871953
8871951
8870171
8674873
1893877377
1893877377
1893340281
1892536248
解决方案 »
- JAVA OO怎样与现实世界建立的桥梁?
- Scanner小问题
- 一个关于Class对象的问题
- 有关JAVA中的多态(向上转型的问题)的问题,请高手指点
- String s=new String("xyz");这条语句创建了2个对象? 相信有很多人不清楚
- 怎样导出邮件地址薄
- 关于用URLConnection下载文件的问题,请各位帮忙。
- HY,关于输入法的问题你解决了吗?
- JAVA连接数据库的问题,急(接下)
- 哎,最近学习遇到N多问题,散分,暂别。。。
- 哪位可以给我讲一下以后工作数据库方面工资高还是javaweb?我现在想选择一个方向,谢谢 大家了!
- 用java的反射机制怎么获取一个类中里面方法中局部变量??
List<String> v = new ArrayList<String>();
v.add("1892536248");
v.add("8871951");
v.add("1893340281");
v.add("IPCYWD167861");
v.add("1893877377");
v.add("1893877377");
v.add("8870171");
v.add("8674873");
v.add("8871953");
v.add("ADSLD187705"); Collections.sort(v, new Comparator<String>() {
public int compare(String s1, String s2) {
return -s1.compareTo(s2);
}
}); for(int i = 0; i < v.size(); i++) {
System.err.println(v.get(i));
}IPCYWD167861
ADSLD187705
8871953
8871951
8870171
8674873
1893877377
1893877377
1893340281
1892536248
lz想要什么规则呢?
IPCYWD167861
ADSLD187705
8674873
8870171
8871951
8871953
1892536248
1893340281
1893877377
1893877377
List<String> v = new ArrayList<String>();
v.add("1892536248");
v.add("8871951");
v.add("1893340281");
v.add("IPCYWD167861");
v.add("1893877377");
v.add("1893877377");
v.add("8870171");
v.add("8674873");
v.add("8871953");
v.add("ADSLD187705"); Collections.sort(v, new Comparator<String>() {
public int compare(String s1, String s2) {
try {
return new Integer(s1).compareTo(new Integer(s2));
}
catch(Exception e) {
return -s1.compareTo(s2);
}
}
}); for(int i = 0; i < v.size(); i++) {
System.err.println(v.get(i));
}
IPCYWD167861
ADSLD187705
8674873
8870171
8871951
8871953
1892536248
1893340281
1893877377
1893877377完全满足需要