【问题标题】:Sorting a set with Map.Entry values使用 Map.Entry 值对集合进行排序
【发布时间】:2016-06-02 06:38:46
【问题描述】:

我有一个Set,如下所示:

Set<Map.Entry<String,String>> set = new HashSet<>();

如何根据Map.Entry 的键对这个Set 进行排序。

谢谢。

【问题讨论】:

    标签: java sorting set


    【解决方案1】:

    正如蒂姆建议的那样,为此目的使用TreeSet。但是,您可以使用 Comparator 已经在 Map.Entry 类中定义的 Comparator 像这样实例化您的 TreeSet,而不是定义自己的 Comparator 实现:

    Set<Map.Entry<String, String>> set = new TreeSet<>(Map.Entry.comparingByKey());
    

    这应该会给你一个有序的Set

    【讨论】:

      【解决方案2】:

      您无法对常规 Java Set 进行排序,因为它没有排序。如果你想要一个有序集合,一个选项是使用TreeSet。您可以使用自定义比较器创建TreeSet,然后将您的HashSet 添加到其中:

      TreeSet<Map.Entry<String,String>> ts
          = new TreeSet<Map.Entry<String,String>>(new Comparator<Map.Entry<String,String>>() {
          @Override
          public int compare(Map.Entry<String,String> entry1, Map.Entry<String,String> entry2) {
              return entry1.getKey().compareTo(entry2.getKey());
          }
      });
      
      ts.addAll(set);
      

      如果你现在对集合进行迭代,你会发现它们是按Map.Entry 元素的键排序的:

      for (Map.Entry<String, String> entry : ts) {
          System.out.println(entry.getKey());
      }
      

      【讨论】:

      • collections.sort 行引发编译时错误。我无法弄清楚。
      猜你喜欢
      • 2012-01-21
      • 2021-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-18
      • 2012-11-03
      • 2010-11-03
      • 1970-01-01
      相关资源
      最近更新 更多