Java / Eclipse:删除指定索引

时间:2016-02-29 20:21:46

标签: java eclipse arraylist

我不确定这是不是重复(可能是),但我无法找到我正在寻找的东西。

我有一个静态ArrayList,用于保存从该类中的构造函数创建的对象,或者任何扩展它的类:

public static ArrayList<Person> PersonList = new ArrayList<>();

public Constructor(....){
  PersonList.add(this);
}

现在我尝试使用索引删除此arraylist中的对象,但我得到ArrayIndexOutOfBounds: Array index out of range:(索引)。

现在我知道这个错误告诉我指定的位置没有元素,但是我不明白为什么PersonList.size()返回4(如果列表中有4个元素)。

我是java的新手,所以我希望这里有人可以帮助我。这是代码:

list.addMouseListener(new MouseAdapter() {
  @Override
  public void mousePressed(MouseEvent arg0) {
    if(SwingUtilities.isRightMouseButton(arg0)) {
      try {
        Person.PersonList.remove(list.getSelectedIndex());
        list.remove(list.getSelectedIndex());
        }catch (Exception e) {
          System.out.println(e);
        }
        System.out.println("Index: " + list.getSelectedIndex());
        updateData();
    }   
  }
});

2 个答案:

答案 0 :(得分:0)

我对此感到困惑:

public Constructor(....){
    PersonList.add(this);
}

看起来每次创建该类的新对象(我假设的人),您都要将其添加到类变量列表中。我假设每次创建该类的新实例时,它都会重置全局列表。你能确认PersonList并不总是大小= 1吗?我怀疑它是,所以将该列表移到另一个班级

答案 1 :(得分:0)

好的,经过一段时间的测试后,似乎它的工作原理完全没问题。它会抛出一个错误告诉我它超出范围,但在每次删除后更新.size()后,它会减少。

虽然我不知道为什么它会起作用,如果它告诉我它没有?