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.

¿Fue útil?

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());
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top