Wie kann ich den Schlüssel eines LinkedHashMap zu einem JList hinzufügen?
-
11-09-2019 - |
Frage
Ich habe eine LinkedHashMap<String,Object>
und frage mich, was der effizienteste Weg, um die String
Teil jedes Element in der LinkedHashMap
in eine JList
zu setzen.
Lösung
Sie können auch die setListData (Vector) Methode:
jList1.setListData(new Vector<String>(map.keySet()));
Bei jedem der setListData
Methoden, sind Sie eine Kopie der aktuellen Daten zu machen, so dass Änderungen an die Karte nicht in der Liste berücksichtigt werden. Sie könnten stattdessen eine benutzerdefinierte erstellen ListModel
und gibt sie an den setModel
Verfahren statt, sondern weil es keine Möglichkeit gibt, ein beliebiges Element einen LinkedHashMap
durch den Index zuzugreifen, ist dies wahrscheinlich nicht machbar.
Andere Tipps
Wenn der JList nicht empfindlich auf Änderungen der ursprünglichen Karte ist, können Sie die ursprüngliche Methode verwendet wird, ist in Ordnung (besser als Vektor verwendet, der die zusätzliche Schicht von Synchronisations hat).
Wenn Sie JList ändern, wenn die Karte ändert, dann werden Sie Ihr eigenes Listmodel schreiben müssen (was nicht schwer ist). Sie werden auch herausfinden, wie wenn sich die Karte kennen.
Fand diese Art und Weise, es zu tun nur, nachdem ich die Frage beantwortet, dachte, ich würde es hier für die Gemeinschaft aufstellen. Ich denke, dass dies der effizienteste Weg ist, es zu tun zu bekommen, aber ich bin sicher offen für weitere Vorschläge.
jList1.setListData(LinkedHashMap.keySet().toArray());