码迷,mamicode.com
首页 > 编程语言 > 详细

按指定规则对List进行排序compare和遍历方法比较

时间:2016-11-01 18:37:06      阅读:250      评论:0      收藏:0      [点我收藏+]

标签:nbsp   apr   put   ring   .com   compare   public   pre   eve   

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);    

 

按指定规则对List进行排序compare和遍历方法比较

标签:nbsp   apr   put   ring   .com   compare   public   pre   eve   

原文地址:http://www.cnblogs.com/sjian/p/6020192.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!