我有一个Set
如下:
Set<Map.Entry<String,String>> set = new HashSet<>();
如何根据Set
的密钥对此Map.Entry
进行排序。
感谢。
答案 0 :(得分:3)
Tim建议,为此目的使用TreeSet
。但是,您可以使用Comparator
类中已定义的TreeSet
实例化Comparator
,而不是定义自己的Map.Entry
实现。
Set<Map.Entry<String, String>> set = new TreeSet<>(Map.Entry.comparingByKey());
现在应该会给你一个很好的订单Set
。
答案 1 :(得分: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());
}