Ist es möglich, die Liste der Werte von HashMap
als Referenz erhaltenGet Werte von HashMap als Referenz
class MyCustomObject {
String name;
Integer id;
MyCustomObject(String name, Integer id){
this.name = name;
this.id = id;
}
}
HashMap<Integer, MyCustomObject> map = new LinkedHashMap<>();
map.put (1, new MyCustomObject("abc",1));
map.put (2, new MyCustomObject("xyz",2));
List<MyCustomObject> list = new ArrayList<>(map.values());
Log.i(TAG,"************ List from HashMap ************");
for (MyCustomObject s : list) {
Log.i(TAG,"name = "+s.name);
}
list.set(0,new MyCustomObject("temp",3));
Log.i(TAG,"************ List from HashMap after update ************");
for (MyCustomObject s : list) {
Log.i(TAG,"name = "+s.name);
}
Log.i(TAG,"************ List from HashMap ************");
List<MyCustomObject> list2 = new ArrayList<>(map.values());
for (MyCustomObject s : list2) {
Log.i(TAG,"name = "+s.name);
}
Ausgabe
**************** List from HashMap ***************
name = abc
name = xyz
**************** List from HashMap after update ***************
name = temp
name = xyz
**************** List from HashMap ***************
name = abc
name = xyz
hier, wenn Werteliste erhalten aus HashMap
es gibt Deep-Kopie zurück.
aktualisieren
Meine Anforderung
- Ich möchte Liste von Werten aus HashMap, weil ich Elemente zuzugreifen, um ihre Position
- wollen möchte ich Reihenfolge der Werte bewahren
- Wenn ich etwas in der extrahierten Liste ändere, sollte es auch in HashMap reflektiert werden
Bitte erzählen, wenn Dritte Bibliothek solche Datenstruktur zur Verfügung stellen, oder, was am besten Ansatz wäre diese Situation
'Liste list = new ArrayList <> (map.values ());' Was denken Sie, was diese Zeile macht? –
Fildor
Es ist flache Kopie, was genau willst du? – Boola
Spoiler: https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#ArrayList(java.util.Collection) – Fildor