2016-01-31 4 views
1

Выход: Лучшие пин-кода: {1=[456008, 456600, 456666], 2=[560089], 4=[456098, 567789]}сортировать TreeMultimap в убывающем (обратном) порядке

Я хочу, чтобы быть в таком порядке: {4=[456098,567789], 2=[560089], 1=[456008, 456600, 456666]}

HashMap<Integer, Integer> totalCustomersByPin = new HashMap<Integer, Integer>(); 
TreeMultimap<Integer, Integer> totalDeliveriesToPin = TreeMultimap.create(); 
Iterator<Entry<Integer, Integer>> iterator = totalCustomersByPin.entrySet().iterator(); 

while (iterator.hasNext()) { 
    Entry<Integer, Integer> pair = iterator.next(); 
    totalDeliveriesToPin.put(pair.getValue(), pair.getKey()); 
} 
System.out.println("Top pincodes:" + totalDeliveriesToPin); 
+1

[Как сортировать TreeMap] (http://stackoverflow.com/a/18923308/5168011) – Guy

+0

Вы всегда нуждаетесь в них в этом порядке, а иногда и наоборот? – Dici

+1

Возможный дубликат [Сортировка По убыванию: Карта Java] (http://stackoverflow.com/questions/18923167/sorting-descending-order-java-map) – RHA

ответ

7

Вы можете установить ключ компаратор при создании TreeMultimap. Вы можете использовать Ordering.natural(), а затем позвонить по телефону reverse(), чтобы отсортировать код в порядке, в обратном порядке.

Пример кода:

public static void main(String[] args) { 
    TreeMultimap<Integer, Integer> map = TreeMultimap.create(Ordering.natural().reverse(), Ordering.natural()); 
    map.put(1, 456008); 
    map.put(1, 456600); 
    map.put(1, 456666); 
    map.put(2, 560089); 
    map.put(4, 456098); 
    map.put(4, 567789); 
    System.out.println(map); 
} 

Это будет печатать: {4=[456098, 567789], 2=[560089], 1=[456008, 456600, 456666]}.

+0

спасибо большое! отлично работает :) – izengod

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