java中使用map排序的实例讲解
对列表进行排序也是我们经常遇到的问题,这里缩小一下范围,使用map来对列表排序。相信大家都有过TreeMap排序的经历,不过Map.Entry能按值进行排序,在用法上略胜一筹。下面我们会对这两种map排序的方法分别进行介绍,着重讲解Map.Entry排序的方法。
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){
Mapmap=newHashMap<>();
map.put("2010","jay");
map.put("1999","whx");
map.put("3010","huaxiao");
List>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可以对集合对象或者数组进行排序的比较器接口,实现该接口的publiccompare(To1,To2)方法即可实现排序,如下:
importjava.util.Comparator;
importjava.util.Iterator;
importjava.util.Map;
importjava.util.Set;
importjava.util.TreeMap;
publicclassTreeMapTest{
publicstaticvoidmain(String[]args){
Mapmap=newTreeMap(
newComparator(){
publicintcompare(Stringobj1,Stringobj2){
//降序排序
returnobj2.compareTo(obj1);
}
});
map.put("b","ccccc");
map.put("d","aaaaa");
map.put("c","bbbbb");
map.put("a","ddddd");
SetkeySet=map.keySet();
Iteratoriter=keySet.iterator();
while(iter.hasNext()){
Stringkey=iter.next();
System.out.println(key+":"+map.get(key));
}
}
}
运行结果如下:
d:aaaaa
c:bbbbb
b:ccccc
a:ddddd
实例扩展:
importjava.util.Comparator;
importjava.util.Scanner;
importjava.util.TreeMap;
importproblem2.Screen;
publicclassTestScreen{
finalstaticintMAX_NUM=8;
publicstaticvoidmain(String[]args){
TreeMapres=newTreeMap(newComparator(){
@Override
publicintcompare(Screenscreen1,Screent1){//定义TreeMap的排序方法
returnscreen1.compareTo(t1);//TreeMap的排序方法是:调用screen的比较方法
}
});
doubleprice,size;
Scannerscan=newScanner(System.in);
for(inti=0;i
到此这篇关于java中使用map排序的实例讲解的文章就介绍到这了,更多相关java如何使用map排序内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!