У меня есть Set
, как показано ниже:Сортировка набор с Map.Entry значения
Set<Map.Entry<String,String>> set = new HashSet<>();
Как разобраться в этом Set
на основе ключа Map.Entry
.
Спасибо.
У меня есть Set
, как показано ниже:Сортировка набор с Map.Entry значения
Set<Map.Entry<String,String>> set = new HashSet<>();
Как разобраться в этом Set
на основе ключа Map.Entry
.
Спасибо.
Как предложил Тим, используйте TreeMap
для этой цели. Но вместо определения собственного Comparator
реализации, вы можете просто создать экземпляр TreeSet
, как это, используя Comparator
уже определен в Map.Entry
классе:
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());
}
Линия collection.sort генерирует ошибку времени компиляции. Я не могу это понять. – user3164187