1

我有一个LinkedHashMap<String,Object>并且想知道将String每个元素的部分LinkedHashMap放入JList.

4

3 回答 3

1

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

如果您希望 jList 在地图更改时更改,那么您将必须编写自己的 ListModel(这并不难)。您还必须弄清楚如何知道地图何时发生变化。

于 2009-06-04T21:41:01.233 回答
1

您还可以使用setListData(Vector)方法:

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

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

于 2009-06-04T21:50:16.817 回答
0

在我回答问题后就发现了这种方法,以为我会把它放在这里供社区使用。我认为这是完成它的最有效方法,但我当然愿意接受更多建议。

jList1.setListData(LinkedHashMap.keySet().toArray());
于 2009-06-04T21:15:09.413 回答