2014-10-16 2 views
0

Я получил HashMap:значения рода Hashmap Java, которые Список <Value>

HashMap<String, List<Value>> facetsInCategories = new HashMap<>(); 

Мне нужно отсортировать список значений внутри значения этого HashMap. Значение в списке имеет четыре поля, и мне нужно отсортировать список по строке «translValue». Вот почему я положил «getTranslatedValue» в пользовательский компаратор. Здесь значение объекта поля:

public String name; 
public int count; 
private String translatedValue; 
private String translation; 

А вот то, что я пробовал:

for (List<Value> value : facetsInCategories.values()) { 
    Collections.sort(value, new Comparator<Value>() { 
      @Override 
      public int compare(Value o1, Value o2) { 
       return o1.getTranslatedValue().compareTo(o2.getTranslatedValue()); 
      } 
    }); 
} 

Я делал это в течение нескольких часов, так что я думал, что вы можете посоветовать как-то об этом.

+4

Что является результатом вы получение и какой результат вы ожидаете? – RealSkeptic

+0

Я бы ожидал, что над кодом будет сортировать ваши объекты Value в соответствии с результатом String-compareTo их «translValue» ... это уже происходит? – JBA

+1

Зачем вы кладете список на карту? в этом нет необходимости. Сортировка должна работать с файлом. – A4L

ответ

1

Код выглядит хорошо. Collections.sort сортирует списки на месте.

Зачем вам нужна эта линия?

facetsInCategories.put("test", value); 

Списки уже добавлены в hashmap. И они будут отсортированы там, где они есть.

С точки нуль-зрения безопасности, то предполагаем, что это никогда не будет нулевым:

o1.getTranslatedValue() 
0

Комментарий эта линия, и он должен сделать трюк:

facetsInCategories.put("test", value); 
+0

facetsInCategories.put (" test ", value); был только для тестов, я удалил его из вопроса прямо сейчас. Сейчас я беспокоюсь о том, что для (List значение: facetsInCategories.values ​​()) выдает ошибку на второй итерации. Это не должно произойти, на мой взгляд. – TheKolaNN

+0

вторая итерация? – SMA

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