java使用TreeSet对JList进行排序
我在做一个作业,我在做一个程序,生成20个随机数,并将它们放入一个数组列表、一个哈希集和一个树集。它应该在JList1中显示这些数字。然后,我将使用HashSet仅显示唯一的数字,并使用TreeSet显示已排序的数字。我制作了三个JLists,并为每个JLists制作了一个函数来更新GUI(可能有一种更简单的方法来实现这一点,但由于我对java非常陌生,所以我只能想到这些)。例如,我的updateGUI函数用于在我的JList中显示arraylist,如下所示:
public void updateGUI(JList someList, ArrayList<Integer> anyarraylist){
DefaultListModel m = new DefaultListModel();
for (Object s : anyarraylist) {
m.addElement(s);
}
someList.setModel(m);
}
然后,当我使用ActionEvent按下按钮时调用该函数:
@Override
public void actionPerformed(ActionEvent arg0) {
generateNumbers();
this.updateGUI(this.numbers1, numberlist);
其中generateNumbers是生成20个随机数的函数,numbers1是我的第一个JList,numberlist是我的arraylist的名称
我对HashSet做了几乎完全相同的事情,以显示具有唯一数字的JList,并且成功了。然而,我随后尝试对TreeSet执行同样的操作,这给了我一个“线程中的异常”AWT-EventQueue-0“java.lang.NullPointerException”-错误。函数如下所示:
public void oppdaterGUI3(JList someList, TreeSet<Integer> anysortedlist){
DefaultListModel m = new DefaultListModel();
for (Object s : anysortedlist) {
m.addElement(s);
}
someList.setModel(m);
}
为什么这样不行?我认为TreeSet的工作方式与HashSet相同。感谢您的帮助。如果需要,我可以发布完整的错误和代码
多谢各位
# 1 楼答案
尽管缺乏信息,我还是提出以下答案
查看NullPointerException的堆栈跟踪。它给出了事件发生的行号
这可能是树集被定义了两次,一次是局部变量。或者有一种情况,树集的副本也必须发生。差不多吧
您可以使用断点对其进行调试。遍历树集变量和另一个变量的所有用法
为了获得更具响应性的GUI,请使用以下模式