Java, как сортировать мультикарту против?

Я использую мультикарту Guava для хранения данных из текстового файла. Формат данных текстового файла выглядит следующим образом:

p1 10
p2 30
p3 40
p1 20
p2 50
p3 60
..
..

Первый столбец — это ключ, а второй — значение. Я хочу отсортировать оценку (значение) от высшего к низшему, но понятия не имею, как сортировать мультикарту... или есть лучшее хранилище для хранения таких данных?

Что еще я подумал, так это сделать два массива, один для имени, а другой для очков, хотя

Я не знаю, можно ли связать два списка.

list1 = {p1,p2,p3}
list2 = {10, 20, 30, 40, 50, 60}

Индекс p1 указывает на 10 и 20. Возможно ли такое?


person sblck    schedule 24.11.2012    source источник
comment
SortedMap‹ String, SortedSet‹ String ›› map = new TreeMap‹›(); Если хочешь больше, скажи мне...   -  person Aubin    schedule 24.11.2012
comment
См. раздел Сортировка Multimap по ключам только в Java   -  person Reimeus    schedule 24.11.2012


Ответы (1)


Вы можете попробовать что-то вроде этого: -

 public static ImmutableMultimap<Integer, MyObject> indexOnScore(Iterable<MyObject> i) {
  List<MyObject> sorted = Ordering.natural().onResultOf(myObjectToScore())
  .sortedCopy(i);
   return Multimaps.index(sorted, myObjectToScore());
}

Другим вариантом может быть создание TreeMultimap и использование Ordering.arbitrary() в качестве компаратора для значений.

person Rahul Tripathi    schedule 24.11.2012