Como posso adicionar as chaves de um LinkedHashMap a um JList?
-
11-09-2019 - |
Pergunta
Eu tenho um LinkedHashMap<String,Object>
e queria saber qual a maneira mais eficiente para colocar a parte String
de cada elemento na LinkedHashMap
em um JList
.
Solução
Você também pode usar o setListData (Vector) método:
jList1.setListData(new Vector<String>(map.keySet()));
Com cada um dos métodos setListData
, você está fazendo uma cópia dos dados reais, então muda para o mapa não será refletido na lista. Você poderia, em vez criar um personalizado ListModel
passá-lo para o setModel
método em vez disso, mas porque não há nenhuma maneira de acessar um elemento arbitrário de uma LinkedHashMap
pelo índice, esta é provavelmente inviável.
Outras dicas
Se o jList não é sensível a alterações do original do Mapa, o método original que usou é bom (melhor do que usar Vector, que tem a camada extra de sychronization).
Se você quiser jList a mudar quando o mapa muda, então você terá que escrever o seu próprio ListModel (que não é tão difícil). Você também terá que descobrir como saber quando as alterações no mapa.
Encontrado esta maneira de fazê-lo apenas depois que respondeu a pergunta, pensei que eu iria colocá-lo aqui para a comunidade. Eu acho que esta é a forma mais eficiente de fazê-lo, mas estou certamente aberto a mais sugestões.
jList1.setListData(LinkedHashMap.keySet().toArray());