Java HashSet和JList上的显示

Java HashSet和JList上的显示,java,swing,vector,jlist,hashset,Java,Swing,Vector,Jlist,Hashset,我有一个关于hashSet的问题。 我正在尝试做一个聊天程序,并希望实时更新 目前,我使用Vector和多线程来存储用户名。顺便问一下,我可以用HashSet代替Vector吗 下面是我处理向量的简单代码 private JList userListMain = new JList(); private Vector userVC = new Vector(); userVC.add(UserAll+" (Me)"); userListMain.setListData(userVC); 有什

我有一个关于hashSet的问题。 我正在尝试做一个聊天程序,并希望实时更新

目前,我使用Vector和多线程来存储用户名。顺便问一下,我可以用HashSet代替Vector吗

下面是我处理向量的简单代码

private JList userListMain = new JList();
private Vector userVC = new Vector();

userVC.add(UserAll+" (Me)");
userListMain.setListData(userVC);

有什么方法可以改变HashSet中的向量吗?

没有,不能。如果不想使用向量,则必须创建自己的ListModel类,即实现ListModel接口的类,该接口的一个要求是元素可以可靠地排序。哈希集对此不起作用,但是树集或其他排序集可能可以用作模型的数据核心。请注意,这当然不像创建树集并将其传递给JList的构造函数那么简单,您的模型类可能应该扩展
AbstractListModel
,以获得它提供的所有侦听器处理和通知处理代码。

编写您自己的
ListModel
,并由
HashSet
支持。…@MadProgrammer:我认为您不能使用HashSet。它必须是一个类似树集的导航墙集。@HovercraftFullOfEels没有说这是个好主意;)-事实上,这两种方法的问题都是能够按顺序获取单个元素…@MadProgrammer这就是为什么有序集是必需的,而树集是有序的,所以没有问题。@Hoverfullofeels但它提出了效率问题,由于每次调用
getElementAt
时都需要迭代
Set
,这不太好……我想说,任何类型的Set都存在支持
getElementAt
方法的问题,因为我所知的
Set
实现都没有任何类型的
get
方法。我想你可以把它包装在某种
列表中
,但这是一个昂贵的操作。。。