2016-10-17 5 views
0

Ich habe eine HashMap Mapping a Dimension (die key) zu einem von ArrayListIntegers (die value). Wie kann ich diese HashMap basierend auf der Größe ArrayList von Integers sortieren?HashMap Sortieren, die auf Arraygröße Array zuordnet basierend

HashMap<Dimension,ArrayList<Integer>> map = new HashMap<Dimension,ArrayList<Integer>>(); 

//code to sort: 
+0

Dies ist eine HashMap; Diese Struktur ist vom Entwurf her unsortiert. Möchten Sie ein sortiertes Array der ArrayList basierend auf ihrer Größe erhalten? –

Antwort

0

Ich vermute, Sie brauchen eine SortedMap aus dieser HashMap von der Größe des Wertes basiert.
Da HashMap die Reihenfolge nicht verwalten kann, verwende ich LinkedHashMap und Java 8 (Streams).

Für aufsteigende Sortierung:

Map<String, List<Integer>> collect = map.entrySet().stream() 
        .sorted((entry1, entry2) -> Integer.compare(entry1.getValue().size(), entry2.getValue().size())) 
        .collect(Collectors.toMap(Entry::getKey, Entry::getValue, (a,b) -> a, LinkedHashMap::new)); 

Für absteigende Sortierung:

Map<String, List<Integer>> collect = map.entrySet().stream() 
        .sorted((entry1, entry2) -> Integer.compare(entry2.getValue().size(), entry1.getValue().size())) 
        .collect(Collectors.toMap(Entry::getKey, Entry::getValue, (a,b) -> a, LinkedHashMap::new)); 
Verwandte Themen