Java HashSet和JList上的显示
我有一个关于hashSet的问题。 我正在尝试做一个聊天程序,并希望实时更新 目前,我使用Vector和多线程来存储用户名。顺便问一下,我可以用HashSet代替Vector吗 下面是我处理向量的简单代码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); 有什
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
方法。我想你可以把它包装在某种列表中
,但这是一个昂贵的操作。。。