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.

Foi útil?

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());
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top