[TOC]
普通变量排序
利用Collections自带的sort方法排序
Collections.sort(list);
lsit可以是实现Comparable接口的任何类。该方法默认升序排序。
若想实现降序,可用以下语句(Object必须可使用指定比较器相互比较):
1 2 3 4 5 6
| Collections.sort(list, new Comparator<String>(){ @Override public int compare(String arg0, String arg1) { return arg1.compareTo(arg0); } });
|
map变量排序
按key排序
利用TreeMap key顺序排放的特性实现
1 2 3 4 5 6
| Map<String,Integer> map = new HashMap<String,Integer>(); map.put("a", 2); ...... SortedMap<String,Integer> sortedMapByKey = new TreeMap<String,Integer>(); sortedMapByKey.putAll(map); System.out.println("map after sort by key asc.." + sortedMapByKey);
|
使用Comparator比较器
1 2 3 4 5 6 7
| sortedMapByKey = new TreeMap<String,Integer>(new Comparator<String>() { @Override public int compare(String arg0, String arg1) { return arg1.compareTo(arg0); } }); sortedMapByKey.putAll(map);
|
按value值排序
1 2 3 4 5 6 7 8 9 10 11 12
| List<Map.Entry<String, Integer>> mapList = new ArrayList<Map.Entry<String, Integer>>(map.entrySet()); Collections.sort(mapList,new Comparator<Map.Entry<String, Integer>> (){ @Override public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) { return o1.getValue() - o2.getValue(); } });
|
比较器
Comparable与Comparator的区别
Comparable & Comparator 都是用来实现集合中元素的比较、排序的,只是 Comparable 是在集合内部定义的方法实现的排序(int compareTo(T other)),Comparator 是在集合外部实现的排序(int compare(Item A,Item B))。
匿名内部类实现comparator
1 2 3 4 5 6 7 8 9
| SortedSet<Item> sortByDesc = new TreeSet<>( new comparator<Item>(){ public int compare(Item A,Item B){ String descA = A.getDesc(); String descB = B.getDesc(); return descA.compareTo(descB); } } );
|