如何在java中排序和打印hashMap

时间:2014-10-01 10:12:34

标签: java hashmap treemap

当我使用toString()

时,我在java中得到了一个带有以下输出的hashMap

{to=3, but=2, said=1, hid=1, Newton=6, by=1, eyes=2, of=2, meter=3, hide=1, his=1, on=1, drew=1, Einstein=5,......}

我的hashMap具有以下语法:<String, Integer>

现在我想这样排序:

  6: Newton
  6: and
  5: Einstein
  3: Pascal
  3: found
  3: meter
  3: one
  3: to
  2: a , ....

这意味着我必须按整数值排序。也是&#34;风格&#34;输出应该如上所示。任何人都可以帮助我,明天我会参加考试:D

4 个答案:

答案 0 :(得分:2)

看起来您想要按地图对其值进行排序。我不认为有任何地图实现可以做到这一点。 TreeMap维护按键排序,但不会帮助你。

因此,您必须编写自己的方法来获取地图的条目(使用entrySet()),按值(以及相同值的键)对它们进行排序,以及无论你喜欢打印它们。

答案 1 :(得分:1)

通常,“对HashMap进行排序”的方法是将键,值或条目集合复制到数组中,然后对数组进行排序;例如使用Arrays.sort方法之一

在您的情况下,您希望使用HashMap.entrySet()提取Comparator方法提供的集合,该Map<K,V>.Entry按值排序Arrays.toString个对象,然后按键排序。

打印已排序条目的简单方法是使用循环。 (我认为Object.toString不适用,因为Map实现通常不会覆盖{{1}}方法。至少,javadoc没有这么说......)

答案 2 :(得分:0)

使用准备好的地图简单实现这个.. !!!

Set<Entry<String,Integer>> s=yourmap.entrySet();
    List<Entry<String,Integer>> l=new ArrayList<Entry<String,Integer>>(s);
    Collections.sort(l,new Comparator<Map.Entry<String, Integer>>() {

        @Override
        public int compare(Entry<String, Integer> arg0,
                Entry<String, Integer> arg1) {

            return (arg1.getValue().compareTo(arg0.getValue()));
        }

    });


    for(Map.Entry<String, Integer> entry:l){
        System.out.println("Key== "+entry.getKey()+" value= in Increasing Order=="+entry.getValue());
    }

我希望这符合您的要求

答案 3 :(得分:0)

我们无法在HashMap中的KEY OR VALUES上实现排序。

java仅提供使用它的键对值进行排序。在java中,我们可以使用TreeMap对MAP的键进行排序。

TreeMap仅提供对键进行排序的工具..