当前位置: 首页 > 知识库问答 >
问题:

Java根据值对Hashmap进行排序

公羊向荣
2023-03-14

边走边学Java(Python背景)。简单的单词计数程序在Java7代码(不能用J8!)。

我有一个单词的哈希图:计数对。现在我需要按计数(递减顺序)排序,并打破按字母顺序使用word的联系。

我正在寻找对这个想法的反馈:

  • 遍历HashMap中的映射项(me)
  • 使用me.getkey=K和me.getvalue=v
  • new map.entry reverse_me=(V,K){不确定此语法}
  • 将reverse_me添加到列表
  • 在地图中为所有我重复
  • List.sort{这是我不确定的地方,它将如何排序,也不知道如何编写比较器。在这一点上,每个列表元素将是一个(count,word)对,sort()应该按递减的count排序,如果相同的计数按字母顺序排序,则按word排序)

这将是最终的输出。

还有,不能用番石榴。

共有1个答案

萧渝
2023-03-14

可以从映射中创建条目集的列表。使用collections.Sort()列表进行排序。当相同时,可以传递自定义比较器以便按排序。

Set<Entry<String, Integer>> set = map.entrySet();
List<Entry<String, Integer>> list = new ArrayList<Entry<String, Integer>>(set);
Collections.sort( list, new Comparator<Map.Entry<String, Integer>>()
{
  public int compare( Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2 )
  {
    int result = (o2.getValue()).compareTo( o1.getValue() );
    if (result != 0) {
      return result;
    } else {
      return o1.getKey().compareTo(o2.getKey());
    }
  }
} );
 类似资料:
  • 我有一个,其中的键是字符串。我需要获取这些键并根据键大小(即字符串长度)对其进行排序,然后将其存储在某个中。 注意:如果两个键的大小相同,那么我们可以把它放在任何顺序。 为(如)。

  • 问题内容: 我试图根据键中的日期对此HashMap进行排序 我的哈希图: 问题答案: 使用代替。正如已经实现的那样,它将在插入时自动排序。 或者,如果您有一个现有的并且想要基于它创建一个,则将其传递给构造函数: 也可以看看: Java教程-地图实现 Java教程-对象排序

  • 编辑:对于同样的问题,我尝试编写一个比较器。但它不起作用

  • 我有一个假设 我的目的是以循环的方式基于来订购它。 输入: SortedList:

  • 问题内容: 我需要根据存储在其中的值对我进行排序。在包含存储在手机联系人的名字。 另外,我还要求在对值进行排序时对键进行自动排序,否则你可以说键和值绑定在一起,因此值的任何更改都应反映在键中。 要求的输出: 问题答案: 尝试下面的代码对我来说很好。你可以选择升序和降序 编辑:版本2 使用了新的Java功能,例如流for-each等 如果值相同,则地图将按键排序

  • 问题内容: 我们如何排序? 我想根据中的值进行排序。 问题答案: 你是否必须使用HashMap?如果只需要Map Interface,请使用TreeMap 如果要通过比较HashMap中的值进行排序。你必须编写代码才能执行此操作,如果要执行此操作,则可以对HashMap的值进行排序: 如果你想经常访问此排序列表,则可以将元素插入到中,尽管集合和列表的语义有些不同。