java:如何使用map排序?

本教程操作环境:windows7系统、java10版,DELL G3电脑。

1.Map.Entry方法

把Map.Entry放进list,再用Comparator对list进行排序

Listlist=newArrayList(map.entrySet());
Collections.sort(list,(Entrye1,Entrye2)->{
returne1.getKey().compareTo(e2.getKey());
});

实例代码:

publicclassSortKeysMapTest{
publicstaticvoidmain(String[]args){
Map<String,String>map=newHashMap<>();
map.put("2010","jay");
map.put("1999","whx");
map.put("3010","huaxiao");

List<Map.Entry<String,String>>list=newArrayList<>(map.entrySet());
Collections.sort(list,(Map.Entrye1,Map.Entrye2)->{
returne1.getKey().toString().compareTo(e2.getKey().toString());
});

for(Map.Entryentry:list){
System.out.println("key:"+entry.getKey()+",value:"+entry.getValue());
}

}
}

2.TreeMap

TreeMap默认是升序的,如果我们需要改变排序方式,则需要使用比较器:Comparator。Comparator可以对集合对象或者数组进行排序的比较器接口,实现该接口的public compare(T o1,To2)方法即可实现排序,如下:

importjava.util.Comparator;
importjava.util.Iterator;
importjava.util.Map;
importjava.util.Set;
importjava.util.TreeMap;
publicclassTreeMapTest{
publicstaticvoidmain(String[]args){
Map<String,String>map=newTreeMap<String,String>(
newComparator<String>(){
publicintcompare(Stringobj1,Stringobj2){
//降序排序
returnobj2.compareTo(obj1);
}
});
map.put("b","ccccc");
map.put("d","aaaaa");
map.put("c","bbbbb");
map.put("a","ddddd");

Set<String>keySet=map.keySet();
Iterator<String>iter=keySet.iterator();
while(iter.hasNext()){
Stringkey=iter.next();
System.out.println(key+":"+map.get(key));
}
}
}

运行结果如下:

d:aaaaa
c:bbbbb
b:ccccc
a:ddddd

原文来自:https://www.py.cn

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容