【发布时间】:2016-06-02 06:38:46
【问题描述】:
我有一个Set,如下所示:
Set<Map.Entry<String,String>> set = new HashSet<>();
如何根据Map.Entry 的键对这个Set 进行排序。
谢谢。
【问题讨论】:
我有一个Set,如下所示:
Set<Map.Entry<String,String>> set = new HashSet<>();
如何根据Map.Entry 的键对这个Set 进行排序。
谢谢。
【问题讨论】:
正如蒂姆建议的那样,为此目的使用TreeSet。但是,您可以使用 Comparator 已经在 Map.Entry 类中定义的 Comparator 像这样实例化您的 TreeSet,而不是定义自己的 Comparator 实现:
Set<Map.Entry<String, String>> set = new TreeSet<>(Map.Entry.comparingByKey());
这应该会给你一个有序的Set。
【讨论】:
您无法对常规 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());
}
【讨论】: