这里有HashMap和TreeMap分别关于key值和Value值的排序:
一、TreeMap的排序
1.Key值排序
TreeMap默认是升序的,如果我们需要改变排序方式,则需要使用比较器:Comparator。Comparator可以对集合对象或者数组进行排序的比较器接口,实现该接口的public compare(T o1,To2)方法即可实现排序
Map<String,Integer> map = new TreeMap<String, Integer>(
new Comparator<String>() {
public int compare(String obj1, String obj2) {
// 降序排序
return obj2.compareTo(obj1);
}
});2.Value值排序
//对Value值进行降序排列
List<Map.Entry<String, Integer>> list=new ArrayList<Map.Entry<String, Integer>>(map.entrySet());
Collections.sort(list,new Comparator<Map.Entry<String, Integer>>() {
public int compare(Map.Entry<String, Integer> o1,Map.Entry<String, Integer> o2) {
return o2.getValue().compareTo(o1.getValue());
}
});二、HashMap的排序
1.Key值排序
第一种:
List<String> list = new ArrayList<>(map.keySet());
Collections.sort(list); Object[] key = map.keySet().toArray();
Arrays.sort(key); 第二种:
List arrayList = new ArrayList(map.entrySet());
Collections.sort(arrayList, new Comparator()
{
public int compare(Object arg1, Object arg2)
{
Map.Entry obj1 = (Map.Entry) arg1;
Map.Entry obj2 = (Map.Entry) arg2;
return (obj1.getKey()).toString().compareTo(obj2.getKey());
}
}); 2.Value值排序
第一种:
List<Integer> valueList = new ArrayList<Integer>(map.values());
Collections.sort(valueList);//取出Map的值第二种:
List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(map.entrySet());
Collections.sort(list, new Comparator<Map.Entry<String, Integer>>(){
public int compare(Map.Entry<String,Integer > o1, Map.Entry<String, Integer> o2){
return (o2.getValue() - o1.getValue());}
});
本文详细介绍了Java中HashMap和TreeMap的排序方法,包括Key值和Value值的升序及降序排序技巧。针对不同需求提供了多种实现方案,如使用Comparator接口自定义排序规则等。
280

被折叠的 条评论
为什么被折叠?



