So teilen Sie eine HashMap in Java

7

Ich habe mich gefragt, ob es möglich ist, eine HashMap in kleinere Teilkarten aufzuteilen.

In meinem Fall habe ich eine HashMap von 100 Elementen und möchte 2 (oder mehr) kleinere HashMaps erstellen, von denen die erste die Einträge von 0 bis 49 enthält, die zweite die Einträge von 50 bis 99 .

%Vor%

Irgendwelche Vorschläge? Vielen Dank!

    
RNO 31.01.2013, 15:41
quelle

7 Antworten

12

Müssen Sie HashMap verwenden?

TreeMap ist wirklich gut für diese Art von Dingen. Hier ist ein Beispiel.

%Vor%     
sharakan 31.01.2013, 15:45
quelle
3

Sie müssen im Grunde die Einträge in bigMap durchlaufen und eine Entscheidung treffen, ob sie zu smallMap1 oder smallMap2 hinzugefügt werden sollen.

    
Oliver Charlesworth 31.01.2013 15:42
quelle
3

Da der HashMap ungeordnet ist (Einträge können in beliebiger Reihenfolge vorkommen), ist es nicht sinnvoll, sie genau zu teilen. Wir können einfach das alternierende boolesche Flag verwenden.

%Vor%     
h22 31.01.2013 15:44
quelle
1

Iteriere über den bigMap mit for (Entry<Integer, Integer> entry : bigMap.entrySet()) und inkrementiere einen i , um zu prüfen, ob du den Eintrag in der ersten oder in der zweiten kleinen Karte hinzufügen musst.

    
sp00m 31.01.2013 15:45
quelle
1

Hier ist eine Lösung mit einer SortedMap:

%Vor%     
Fabrice TIERCELIN 03.06.2016 12:54
quelle
0
%Vor%

ist der schnellste Weg, um durch Ihre ursprüngliche Karte zu iterieren. Sie können dann den Map.Entry -Taster verwenden, um zu entscheiden welche neue Karte zu füllen ist.

    
Brian Agnew 31.01.2013 15:44
quelle
0

Dies war eine der Funktionen, die mir geholfen haben, ich hoffe, es ist hilfreich für andere. Dieser funktioniert unabhängig vom Objekt / Grundelement, das als Schlüssel gespeichert ist.

Der oben vorgeschlagene TreeMap-Ansatz funktioniert nur, wenn die Schlüssel Primitive, geordnet und in exakter Reihenfolge des Indexes sind.

%Vor%     
Nizamudeen Karimudeen 19.01.2017 21:20
quelle

Tags und Links