Java对ArrayList进行排序

数字使用直接比较大小来排序,String的话,使用compare()方法进行排序。

测试代码:

1.对字符串对象排序

 1     @Test
 2     public void test17() throws Exception {
 3         List< String > stringList = new ArrayList<>();
 4         stringList.add("haha");
 5         stringList.add("123");
 6         stringList.add("wq");
 7         stringList.add("d");
 8         stringList.add("rt");
 9         stringList.add("uuk");
10         System.out.println("排序前:" + stringList);
11         Collections.sort(stringList, new Comparator< String >() {
12             @Override
13             public int compare(String lhs, String rhs) {
14                 System.out.println("排序字符串:" + lhs + "," + rhs);
15 
16                 int i = lhs.compareTo(rhs);
17                 System.out.println("排序结果" + i);
18                 if ( i > 0 ) {
19                     return 1;
20                 } else {
21                     return -1;
22                 }
23             }
24         });
25         System.out.println("排序后:" + stringList);
26     }

打印的日志:

 1 排序前:[haha, 123, wq, d, rt, uuk]
 2 排序字符串:123,haha
 3 排序结果-55
 4 排序字符串:wq,123
 5 排序结果70
 6 排序字符串:wq,haha
 7 排序结果15
 8 排序字符串:d,haha
 9 排序结果-4
10 排序字符串:d,123
11 排序结果51
12 排序字符串:rt,haha
13 排序结果10
14 排序字符串:rt,wq
15 排序结果-5
16 排序字符串:uuk,haha
17 排序结果13
18 排序字符串:uuk,wq
19 排序结果-2
20 排序字符串:uuk,rt
21 排序结果3
22 排序后:[123, d, haha, rt, uuk, wq]

 

2.对数字进行排序

 1     @Test
 2     public void test18() throws Exception {
 3         List< Integer > stringList = new ArrayList<>();
 4         stringList.add(123);
 5         stringList.add(32);
 6         stringList.add(0);
 7         stringList.add(-4);
 8         stringList.add(5);
 9         stringList.add(123131);
10         System.out.println("排序前:" + stringList);
11         Collections.sort(stringList, new Comparator< Integer >() {
12             @Override
13             public int compare(Integer lhs, Integer rhs) {
14                 if ( lhs > rhs ) {
15                     return 1;
16                 } else {
17                     return -1;
18                 }
19             }
20         });
21         System.out.println("排序后:" + stringList);
22     }

打印日志:

排序前:[123, 32, 0, -4, 5, 123131]
排序后:[-4, 0, 5, 32, 123, 123131]

 

在实现Comparator接口的compare()方法的时候,return 1代表大于,return -1代表小于。然后根据返回值来进行排序。

posted @ 2016-06-05 16:58  熠然  阅读(29631)  评论(0编辑  收藏  举报