2016-07-31 12 views
0

Nehmen wir an, ich habe eine LinkedHashMap<String, Double> myMap, die ich hinzugefügt habe pair1, pair2, pair3 Paare zu.Besteht eine Auflistung (Werte) von LinkedHashMap den Anzeigenauftrag?

Und jetzt kann ich die folgende Schleife:

for (Double currDouble : myMap.getValues()) {...} 

wäre das erste Double Objekt in der Schleife derjenige sein, der von pair1? Und zweitens von pair2? Oder muss es nicht sein?

Ich überprüfte mit einem ähnlichen Programm und es scheint, dass es Reihenfolge bleibt, aber wäre das immer der Fall?

+4

Die Reihenfolge der ** Schlüssel ** wird beibehalten (nicht die ** Werte **). –

Antwort

2

Ja!

Aus dem ersten Satz der LinkedHashMap-Dokumentation: ... Implementierung der Map-Schnittstelle mit vorhersagbarer Iterationsreihenfolge .... das ist normalerweise die Reihenfolge, in der Schlüssel in die Karte eingefügt wurden (Einfügereihenfolge).

Wenn ein Schlüssel erneut eingefügt wird (möglicherweise mit einem anderen Wert), wird die ursprüngliche Reihenfolge nicht geändert.

2

Standardmäßig behält die den Anzeigenauftrag bei. Es gibt jedoch eine Option, um auf die Zugriffsreihenfolge umzuschalten, was möglicherweise der verwirrende Faktor gewesen wäre.

So Ihre Frage zu beantworten, ja, wird der erste Double von pair2 von pair1 und der zweite sein usw. Angesichts der Tatsache, dass Sie nicht die LinkedHashMap zuzugreifen, um festgelegt haben.

Wenn Sie sich immer noch nicht sicher über das Verhalten sind, können Sie es immer testen, indem Sie eine Menge Daten zu einer hinzufügen und darüber iterieren, wie Sie in Ihrer Frage beschrieben. Sie werden sehen, dass die Einfügereihenfolge (oder die Zugriffsreihenfolge, falls festgelegt) beibehalten wird.