Java 如何将LinkedHashMap的密钥添加到JList?

Java 如何将LinkedHashMap的密钥添加到JList?,java,user-interface,jlist,linkedhashmap,Java,User Interface,Jlist,Linkedhashmap,我有一个LinkedHashMap,想知道将LinkedHashMap中每个元素的String部分放入JList最有效的方法是什么 在我回答了这个问题后,我发现了这个方法,我想我会把它放在这里,为社区服务。我认为这是完成任务最有效的方法,但我当然愿意接受更多的建议 jList1.setListData(LinkedHashMap.keySet().toArray()); 如果jList对原始贴图的更改不敏感,那么您使用的原始方法很好(比使用Vector更好,Vector具有额外的同步层) 如果

我有一个
LinkedHashMap
,想知道将
LinkedHashMap
中每个元素的
String
部分放入
JList
最有效的方法是什么

在我回答了这个问题后,我发现了这个方法,我想我会把它放在这里,为社区服务。我认为这是完成任务最有效的方法,但我当然愿意接受更多的建议

jList1.setListData(LinkedHashMap.keySet().toArray());

如果jList对原始贴图的更改不敏感,那么您使用的原始方法很好(比使用Vector更好,Vector具有额外的同步层)

如果您希望jList在映射更改时更改,那么您必须编写自己的ListModel(这并不难)。您还必须了解如何知道地图何时更改。

您也可以使用以下方法:

jList1.setListData(新向量(map.keySet());

使用每个
setListData
方法,您都在复制实际数据,因此对地图的更改不会反映在列表中。您可以改为创建自定义并将其传递给方法,但由于无法通过索引访问
LinkedHashMap
的任意元素,这可能是不可行的。

只要您在向映射添加内容时不希望JList更新,这将起作用。您也可以使用setListData(Vector)方法:jList1.setListData(新向量(map.keySet());我应该把它放在一个答案里,还是你想把它编辑成这个?你可以继续,把它放在一个答案里,我喜欢在应该得到赞扬的地方给予赞扬。你说原始方法“比使用向量更好”是什么意思?我只是好奇。向量类的每个方法都是同步的。这会为每次通话增加少量费用。这并没有什么大的区别,但由于另一种技术也同样简单,我推荐它而不是向量。
jList1.setListData(new Vector<String>(map.keySet()));