Java 对HashMap进行排序的三种常见方法
首先来看看Map集合获取元素的三种常见方法keySet()、values()、entrySet()
1.values():
返回map集合的所有value的Collection集合(于集合中无序存放)
importjava.util.*; publicclassMain{ publicstaticvoidmain(String[]args){ Mapmap=newHashMap ();//构建键值对为 的Map集合 map.put("a","aaa"); map.put("b","bbb"); map.put("c","ccc"); Collection collection=map.values();//获取map集合的所有value的Collection集合(于集合中无序存放) System.out.println(collection); } } /** *运行结果 *[bbb,ccc,aaa] */
2.keySet():
返回map集合的所有键的Set集合(于Set集合中无序存放)
通过迭代取出所有key,再利用get()方法获取value,for(类型元素:集合)的本质是获取集合的迭代器进行迭代
importjava.util.*; publicclassMain{ publicstaticvoidmain(String[]args){ Mapmap=newHashMap ();//构建键值对为 的Map集合 map.put("a","aaa"); map.put("b","bbb"); map.put("c","ccc"); Set keySet=map.keySet();//获取map集合的所有键的Set集合(于Set集合中无序存放) Iterator iter=keySet.iterator();//获取keySet集合的迭代器 while(iter.hasNext()){ Stringkey=iter.next(); Stringvalue=map.get(key); System.out.println("key:"+key+"-->value:"+value); } /* for(Stringkey:keySet){ Stringvalue=map.get(key); System.out.println("key:"+key+"-->value:"+value); } */ } } /** *运行结果 *key:b-->value:bbb *key:c-->value:ccc *key:a-->value:aaa */
3.entrySet():
返回map集合的所有"映射"的Set集合,这里规范每个"映射"的类型为Map.Entry
通过迭代取出所有的“映射”,再利用getKey()、getValue()方法获取相应键、值
importjava.util.*; publicclassMain{ publicstaticvoidmain(String[]args){ Mapmap=newHashMap ();//构建键值对为 的Map集合 map.put("a","aaa"); map.put("b","bbb"); map.put("c","ccc"); Set >entrySet=map.entrySet();//获取map集合的所有"映射"的Set集合,这里规范每个映射的类型为Map.Entry (于Set集合中无序存放) Iterator >iter=entrySet.iterator();//获取entrySet集合的迭代器,Map.Entry 为迭代元素的类型 while(iter.hasNext()){ Map.Entry item=iter.next(); Stringkey=item.getKey(); Stringvalue=item.getValue(); System.out.println("key:"+key+"-->value:"+value); } /* for(Map.Entry item:entrySet){ Stringkey=item.getKey(); Stringvalue=item.getValue(); System.out.println("key:"+key+"-->value:"+value); } */ } } /** *运行结果 *key:b-->value:bbb *key:c-->value:ccc *key:a-->value:aaa */
有以上方法作为基础,那么我们很容易想到对HashMap进行排序的两种方法
1.通过keySet()获取Map集合的所有键的Set集合,由List集合获取其中所有元素,通过比较器对元素为键的List集合进行排序
2.通过entrySet()获取Map集合所有映射的Set集合,由List集合获取其中所有元素,通过比较器对元素为"映射"List集合进行排序
通过对比较器compare方法的Override,两者还可以实现利用value进行排序。有关java中Comparable和Comparator比较的详解
importjava.util.*; publicclassDescKeyComparatorimplementsComparator{ publicstaticvoidmain(String[]args){ Map map=newHashMap ();//构建键值对为 的Map集合 map.put("a","aaa"); map.put("b","bbb"); map.put("c","ccc"); Set entrySet=map.keySet();//获取map集合的所有键的Set集合(于Set集合中无序存放) List list=newArrayList (entrySet);//新建List集合获取Set集合的所有元素(键对象)(顺序与Set集合一样) /** *接下来的排序是list的专长了 *通过“比较器(DescKeyComparator)”,对list进行排序 */ Collections.sort(list,newDescKeyComparator()); /* Collections.sort(list);//String实现了Comparable,默认升序排列 */ Iterator iter=list.iterator();//获取List集合的迭代器,String为迭代元素的类型 while(iter.hasNext()){ Stringkey=iter.next(); Stringvalue=map.get(key); System.out.println("key:"+key+"-->value:"+value); } /* for(Map.Entry item:list){ Stringkey=iter.next(); Stringvalue=map.get(key); System.out.println("key:"+key+"-->value:"+value); } */ } @Override publicintcompare(Stringkey1,Stringkey2){ returnkey2.compareTo(key1);//降序排序;String作为api提供的类,实现了Comparable的compareTo方法被设计成小于、等于、大于分别返回负数、零、正数 } } /** *运行结果 *key:c-->value:ccc *key:b-->value:bbb *key:a-->value:aaa */
importjava.util.*; publicclassAscKeyComparatorimplementsComparator>{ publicstaticvoidmain(String[]args){ Map map=newHashMap ();//构建键值对为 的Map集合 map.put("a","aaa"); map.put("b","bbb"); map.put("c","ccc"); Set >entrySet=map.entrySet();//获取map集合的所有"映射"的Set集合,这里规范每个映射的类型为Map.Entry (于Set集合中无序存放) List >list=newArrayList >(entrySet);//新建List集合获取Set集合的所有元素("映射"对象)(顺序与Set集合一样) /** *接下来的排序是list的专长了 *通过“比较器(AscKeyComparator)”,对list进行排序 */ Collections.sort(list,newAscKeyComparator()); Iterator >iter=list.iterator();//获取List集合的迭代器,Map.Entry 为迭代元素的类型 while(iter.hasNext()){ Map.Entry item=iter.next(); Stringkey=item.getKey(); Stringvalue=item.getValue(); System.out.println("key:"+key+"-->value:"+value); } /* for(Map.Entry item:list){ Stringkey=item.getKey(); Stringvalue=item.getValue(); System.out.println("key:"+key+"-->value:"+value); } */ } @Override publicintcompare(Map.Entry item1,Map.Entry item2){ returnitem1.getKey().compareTo(item2.getKey());//升序排序 } } /** *运行结果 *key:a-->value:aaa *key:b-->value:bbb *key:c-->value:ccc */
以上就是Java对HashMap进行排序的三种常见方法的详细内容,更多关于Java对HashMap进行排序的资料请关注毛票票其它相关文章!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。