Java TreeMap升序|降序排列和按照value进行排序的案例
TreeMap升序|降序排列
importjava.util.Comparator; importjava.util.TreeMap; publicclassMain{ publicstaticvoidmain(String[]args){ TreeMapmap1=newTreeMap ();//默认的TreeMap升序排列 TreeMap map2=newTreeMap (newComparator (){ /* *intcompare(Objecto1,Objecto2)返回一个基本类型的整型, *返回负数表示:o1小于o2, *返回0表示:o1和o2相等, *返回正数表示:o1大于o2。 */ publicintcompare(Integera,Integerb){ returnb-a; } }); map2.put(1,2); map2.put(2,4); map2.put(7,1); map2.put(5,2); System.out.println("Map2="+map2); map1.put(1,2); map1.put(2,4); map1.put(7,1); map1.put(5,2); System.out.println("map1="+map1); } }
TreeMap按照value进行排序
TreeMap底层是根据红黑树的数据结构构建的,默认是根据key的自然排序来组织(比如integer的大小,String的字典排序)。所以,TreeMap只能根据key来排序,是不能根据value来排序的(否则key来排序根本就不能形成TreeMap)。
今天有个需求,就是要根据treeMap中的value排序。所以网上看了一下,大致的思路是把TreeMap的EntrySet转换成list,然后使用Collections.sor排序。
代码:
publicstaticvoidsortByValue(){ Mapmap=newTreeMap (); map.put("a","dddd"); map.put("d","aaaa"); map.put("b","cccc"); map.put("c","bbbb"); List >list=newArrayList >(map.entrySet()); Collections.sort(list,newComparator >(){ //升序排序 publicintcompare(Entry o1,Entry o2){ returno1.getValue().compareTo(o2.getValue()); } }); for(Entry e:list){ System.out.println(e.getKey()+":"+e.getValue()); } }
补充知识:使用比较器对Treemap按照value进行排序
使用比较器对Treemap按照value进行排序(value值只有是string类型时才适用)
有时我们需要根据TreeMap的value来进行排序。对value排序我们就需要借助于Collections的sort(Listlist,Comparator
publicclassMapSortDemo{ publicstaticvoidmain(String[]args){ Mapmap=newTreeMap (); map.put("KFC","kfc"); map.put("WNBA","wnba"); map.put("NBA","nba"); map.put("CBA","cba"); Map resultMap=sortMapByKey(map);//按Key进行排序 //Map resultMap=sortMapByValue(map);//按Value进行排序 for(Map.Entry entry:resultMap.entrySet()){ System.out.println(entry.getKey()+""+entry.getValue()); } } /** *使用Map按value进行排序 *@parammap *@return */ publicstaticMap sortMapByValue(Map oriMap){ if(oriMap==null||oriMap.isEmpty()){ returnnull; } Map sortedMap=newLinkedHashMap (); List >entryList=newArrayList >( oriMap.entrySet()); Collections.sort(entryList,newMapValueComparator()); Iterator >iter=entryList.iterator(); Map.Entry tmpEntry=null; while(iter.hasNext()){ tmpEntry=iter.next(); sortedMap.put(tmpEntry.getKey(),tmpEntry.getValue()); } returnsortedMap; } }
//比较器 classMapValueComparatorimplementsComparator>{ @Override publicintcompare(Entry me1,Entry me2){ returnme1.getValue().compareTo(me2.getValue()); } }
方式二
publicclassTreeMapTest{ publicstaticvoidmain(String[]args){ Mapmap=newTreeMap (); map.put("a","ddddd"); map.put("c","bbbbb"); map.put("d","aaaaa"); map.put("b","ccccc"); //这里将map.entrySet()转换成list List >list=newArrayList >(map.entrySet()); //然后通过比较器来实现排序 Collections.sort(list,newComparator >(){ //升序排序 publicintcompare(Entry o1, Entry o2){ returno1.getValue().compareTo(o2.getValue()); } }); for(Map.Entry mapping:list){ System.out.println(mapping.getKey()+":"+mapping.getValue()); } } }
运行结果如下:
d:aaaaa
c:bbbbb
b:ccccc
a:ddddd
以上这篇JavaTreeMap升序|降序排列和按照value进行排序的案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。