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代表小於。然后根據返回值來進行排序。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM