Вопрос

у меня есть LinkedHashMap<String,Object> и мне было интересно, какой самый эффективный способ разместить String часть каждого элемента в LinkedHashMap в JList.

Это было полезно?

Решение

Вы также можете использовать setListData (вектор) метод:

jList1.setListData(new Vector<String>(map.keySet())); 

С каждым из setListData методы, вы делаете копию реальных данных, поэтому изменения на карте не будут отражены в списке.Вместо этого вы можете создать собственный ListModel и передать его в setModel вместо этого, но поскольку нет способа получить доступ к произвольному элементу LinkedHashMap по индексу это, вероятно, неосуществимо.

Другие советы

Если jList не чувствителен к изменениям исходной карты, исходный метод, который вы использовали, подойдет (лучше, чем использование вектора, который имеет дополнительный уровень синхронизации).

Если вы хотите, чтобы jList менялся при изменении карты, вам придется написать свою собственную ListModel (что не так уж и сложно).Вам также придется выяснить, как узнать, когда карта изменится.

Нашел этот способ сделать это сразу после того, как ответил на вопрос, и подумал, что выложу его здесь для сообщества.Я думаю, что это наиболее эффективный способ добиться этого, но я, конечно, открыт для дополнительных предложений.

jList1.setListData(LinkedHashMap.keySet().toArray());
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top