按指定規則對List進行排序compare和遍歷方法比較


1、兩種排序方式分別有不同的排序規則設定模式

  a> 用於compare方式排序的mapRule規則

 1     Map<String, Integer> mapRule = new HashMap<String, Integer>();
 2         mapRule.put("AAA+", 1);
 3         mapRule.put("AAA", 2);
 4         mapRule.put("AAA-", 3);
 5         mapRule.put("AA+", 4);
 6         mapRule.put("AA", 5);
 7         mapRule.put("AA-", 6);
 8         mapRule.put("A+", 7);
 9         mapRule.put("A", 8);
10         mapRule.put("A-", 9);
11         mapRule.put("BBB+", 10);
12         mapRule.put("BBB", 11);
13         mapRule.put("BBB-", 12);
14         mapRule.put("BB+", 13);
15         mapRule.put("BB", 14);
16         mapRule.put("BB-", 15);
17         mapRule.put("B+", 16);
18         mapRule.put("B", 17);
19         mapRule.put("B-", 18);
20         mapRule.put("CCC+", 19);
21         mapRule.put("CCC", 20);
22         mapRule.put("CCC-", 21);
23         mapRule.put("CC+", 22);
24         mapRule.put("CC", 23);
25         mapRule.put("CC-", 24);
26         mapRule.put("C+", 25);
27         mapRule.put("C", 26);
28         mapRule.put("C-", 27);

  b>用於遍歷排序的ArrayList規則

1  List<String> sortList = new ArrayList<String>(
2                 Arrays.asList("AAA+", "AAA", "AAA-", "AA+", "AA", "AA-", "A+", "A", "A-", "BBB+", "BBB", "BBB-", "BB+",
3                         "BB", "BB-", "B+", "B", "B-", "CCC+", "CCC", "CCC-", "CC+", "CC", "CC-", "C+", "C", "C-"));

2、生成一個用於排序的測試list

 1     List<String> list = new ArrayList<>();
 2         for(int i = 0 ; i< 1000000;i++){
 3             list.add("AA");
 4             list.add("AAA");
 5             list.add("BBB");
 6             list.add("BB+");
 7             list.add("AA+");
 8             list.add("A-");
 9             list.add("B-");
10             list.add("BB+");
11             list.add("BB+");
12         }

3、進行排序

 1         long startTime = System.currentTimeMillis();
 2         long endTime = System.currentTimeMillis();
 3         float excTime = (float) (endTime - startTime) / 1000;
 4 
 5         // 執行方法
 6         startTime = System.currentTimeMillis();
 7     //利用compare進行排序
 8         Collections.sort(list, new Comparator<String>() {
 9             public int compare(String a, String b) {
10                 Integer v1 = (Integer) mapRule.get(a);
11                 Integer v2 = (Integer) mapRule.get(b);
12                 return Integer.compare(v1, v2);
13             }
14         });
15         endTime = System.currentTimeMillis();
16         excTime = (float) (endTime - startTime) / 1000;
17         System.out.println(excTime);
18 
19 
20 
21         System.out.println("-------------------------------------");
22         
23        
24         //迭代器遍歷排序
25         startTime = System.currentTimeMillis();
26         Iterator<String> iter = sortList.iterator();
27         List<Object> dtList = new ArrayList<>();
28         while (iter.hasNext()){
29             String level = iter.next();
30             Iterator<String> it = list.iterator();
31             while (it.hasNext()){
32                 if(level.equals(it.next())){
33                     dtList.add(level);
34                 }
35             }
36         }
37         endTime = System.currentTimeMillis();
38         excTime = (float) (endTime - startTime) / 1000;
39         System.out.println(excTime);    

 


免責聲明!

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



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