2016-06-10 3 views
0

У меня есть следующий TreeMapСортировать hasmap по значению внутри TreeMap

private TreeMap<Long, HashMap<Long, Entry>> index; 

запись содержит:

int tf //count 
ArrayList<long> off //positions 

Для каждой записи в TreeMap, я хотел бы отсортировать HashMaps по ТФ. На следующем рисунке tf из [3] имеет большее значение tf [0], поэтому я хотел бы переместить его в начале. Как я могу это сделать?

enter image description here

ответ

0

Я считаю, что основная проблема с вопросом является то, что HashMaps не сортируется по определению. Во-вторых, может оказаться полезным определение переменной, которое является более общим:

private SortedMap<Long, SortedMap<Entry, Long>> index; 

Отмечено, что я переключил порядок ввода и длинные. Это связано с тем, что Карты только сортируются на основе ключа. При создании экземпляра этой карты вам придется либо сделать Entry Compar Comparable, либо создать собственный Компаратор.

0

Вы не можете заказать HashMap. Попытка сделать это разрушает способ хранения HashMap и находит добавленные к нему элементы.

0

То, что вы пытаетесь сделать здесь (как я понимаю), сортирует treemap по его значению, а TreeMap может сортировать только по его ключам , подробнее здесь - TreeMap sort by value

Вы можете попробовать написать свой собственный метод сортировки и сохранить результат сортировки в связаннойHashMap вместо Treemap. Таким образом, вы сможете получить доступ к записям в точном порядке, который вы добавили к связанномуHashMap. Примечание: при каждом изменении, происходящем на исходной карте, вам нужно будет отсортировать его и переместить в другую связаннуюHashMap. Это очень неуклюжий.

Вы можете использовать другую объектную модель для своей программы.

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

  • Нет связанных вопросов^_^