按指定规则对List进行排序compare和遍历方法比较
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了按指定规则对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);
以上是关于按指定规则对List进行排序compare和遍历方法比较的主要内容,如果未能解决你的问题,请参考以下文章
Java 8 进阶手册(XX):使用 Comparator 对列表进行排序