【深入Java基础】HashMap高级用法(一):排序 |
您所在的位置:网站首页 › hashmap的排序 › 【深入Java基础】HashMap高级用法(一):排序 |
HashMap高级用法(一):排序
根据key排序 HashMap是无序的,我们可以根据key进行升序或降序。 1.利用List和Collections来实现排序 先获取HashMap的keySet,然后将keySet放入List,在由Collections的sort方法进行排序。 HashMap hashMap = new HashMap(); hashMap.put(400,"dd"); hashMap.put(3,"cc"); hashMap.put(2,"bb"); hashMap.put(1,"aa"); System.out.println(hashMap); //将keySet放入list ArrayList list= new ArrayList(hashMap.keySet()); //调用sort方法并重写比较器进行升/降序 Collections.sort(list, new Comparator() { @Override public int compare(Integer o1, Integer o2) { return o1>o2?1:-1; } }); Iterator iterator = list.iterator(); //迭代排序后的key的list while ((iterator.hasNext())){ Integer key = iterator.next(); String value = hashMap.get(key); System.out.print(key+"="+value+","); } System.out.println();2.与第一种方法类似,不过是将entrySet放入list后在sort。比较器里取得entrySet的key后在比较,本质不变。 3.利用TreeMap并重写排序compare排序 TreeMap是SortedMap基于红黑树的实现,日后在论。 System.out.println(hashMap);//借用上边的hashMap TreeMap treeMap = new TreeMap(new Comparator() { @Override public int compare(Integer o1, Integer o2) { return o1>o2?1:-1; } }); treeMap.putAll(hashMap); System.out.println(treeMap);根据value排序 和根据key排序一样,不过是将比较器的比较内容改为比较value的大小。 ArrayList list = new ArrayList(hashMap.entrySet()); Collections.sort(list, new Comparator() { @Override public int compare(Map.Entry o1, Map.Entry o2) { return o1.getValue().compareTo(o2.getValue());//升序,前边加负号变为降序 } }); Iterator iterator = list.iterator(); for(Map.Entry m : list){ System.out.println(m.getKey()+"="+m.getValue()); }其中排序部分代码: Collections.sort(list, new Comparator() { @Override public int compare(Map.Entry o1, Map.Entry o2) { return o1.getValue().compareTo(o2.getValue());//升序,前边加负号变为降序 } });可以用lambda表达式简写为: Collections.sort(list, (o1, o2) -> { return o1.getValue().compareTo(o2.getValue());//升序,前边加负号变为降序 });还可以更简单的写为 : Collections.sort(list, Comparator.comparing(Map.Entry::getValue)); |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |