在集合框架的应用中,往往都要进行排序,排序规则多种多样,或者只是简单的字符串大小排序,简单的数字大小排序,但有时根据需求排序规则会比较复杂。这时就需要Collection.sort()的使用技巧了。
对数字大小进行排序(Integer):
public void testSortInteger(){
List<Integer> list = new ArrayList<Integer>();
//往list中插入10个100以内的随机整数
Random random = new Random();
Integer k;
for(int i=0;i<10;i++){
do{
//防止重复
k=random.nextInt(100);//自动装箱,且k在100之内
}while(list.contains(k));
list.add(k);
System.out.println("成功添加整数:"+k);
}
System.out.println("-----------排序前------------");
for(Integer integer:list){
System.out.println("元素:"+integer);
}
Collections.sort(list);//从小到大排序
System.out.println("-----------排序后------------");
for(Integer integer:list){
System.out.println("元素:"+integer);
}
}
运行结果:
成功添加整数:44
成功添加整数:28
成功添加整数:18
成功添加整数:56
成功添加整数:73
成功添加整数:84
成功添加整数:2
成功添加整数:54
成功添加整数:65
成功添加整数:53
———–排序前————
元素:44
元素:28
元素:18
元素:56
元素:73
元素:84
元素:2
元素:54
元素:65
元素:53
———–排序后————
元素:2
元素:18
元素:28
元素:44
元素:53
元素:54
元素:56
元素:65
元素:73
元素:84
结果分析:
从结果可以看到,对int的包装类Integer进行了从小到大的排序。
值得一提的是,程序中用了do…while循环排除重复的数字。while内是list.contains(k),就是一个个遍历元素与比较元素进行equals()比较,查看Integer的源码可以发现里面重写了equals()方法,就是比较拆箱后的值是否相等。
对字符串进行排序(String):
public void testSortString(){
List<String> list = new ArrayList<String>();
list.add("microsoft");
list.add("google");
list.add("Google");
list.add("h");
list.add("z");
System.out.println("-----------排序前---------