2016-06-02 5 views

ответ

3

Как предложил Тим, используйте TreeMap для этой цели. Но вместо определения собственного Comparator реализации, вы можете просто создать экземпляр TreeSet, как это, используя Comparator уже определен в Map.Entry классе:

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()); 
} 
+0

Линия collection.sort генерирует ошибку времени компиляции. Я не могу это понять. – user3164187

Смежные вопросы