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.

War es hilfreich?

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());
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top