我正在用 Java 编写通讯录应用程序。联系人显示在使用 Sorted TreeSet 列表模型的 JList 上。
我添加了一个搜索字段,并为其添加了一个关键监听器。输入每个键后,列表模型的子集功能将用于显示缩小的联系人集。我希望 JList 显示这个缩小范围的子集。
我正在考虑将 SortedSet 转换为 Vector,然后使用 JList 的 setListData 方法来显示结果,但我知道这会很慢且效率低下,并且当您使用关键监听器时,这是一个更糟糕的主意。
所以我想问一下,解决这个问题最有效的方法是什么。
感谢您的帮助。
最佳答案
我会延长 AbstractListModel
并直接使用Set/subSet作为JList显示的数据来源。每次用模型中的另一个子集替换当前子集时,请调用 fireContentsChanged
以使 View (JList)了解更改。
这样,就不需要将 Set 转换为 Vector。
关于java - 在 Java 中,有什么比将 SortedSet 转换为 Vector 更有效的替代方法呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7258433/