¿Cómo puedo añadir las teclas de un LinkedHashMap a un JList?
-
11-09-2019 - |
Pregunta
Tengo un LinkedHashMap<String,Object>
y se preguntaba cuál es la forma más eficiente de poner la parte String
de cada elemento en el LinkedHashMap
en un JList
.
Solución
También puede utilizar el setListData (Vector) método :
jList1.setListData(new Vector<String>(map.keySet()));
Con cada uno de los métodos setListData
, estás haciendo una copia de los datos reales, por lo que los cambios en el mapa no se reflejarán en la lista. En su lugar podría crear una costumbre ListModel
pasarlo al método setModel
lugar, sino porque no hay manera de acceder a un elemento arbitrario de un LinkedHashMap
por el índice, esto es probablemente inviable.
Otros consejos
Si el JList no es sensible a los cambios del mapa original, el método original que utilizó está muy bien (mejor que el uso de vectores, que tiene la capa extra de sincronizacion).
Si desea JList a cambiar cuando cambia el mapa, entonces tendrá que escribir su propio ListModel (que no es tan difícil). También tendrá que encontrar la manera de saber cuando cambia el mapa.
Se han encontrado esta manera de hacerlo justo después de que respondieron a la pregunta, pensé que iba a ponerlo aquí para la comunidad. Creo que esta es la forma más eficaz de lograr que se haga, pero sin duda estoy abierto a sugerencias más.
jList1.setListData(LinkedHashMap.keySet().toArray());