arraylists的Arraylists中的remove()不起作用

时间:2012-11-21 05:19:58

标签: java arraylist

我正在声明以下两个类:

   public class formula
    {
    ArrayList<values> var= new ArrayList<values>;
}

public class values
{
    int val;
    void addval(int val1)
    {
        val=val1;
    }
}

我声明了一个类型为公式的ArrayList。

 ArrayList<formula> S= new ArrayList<formula>;

当我尝试执行以下语句时:

  S.get(i).var.remove(b);

其中i是循环变量

我没有收到任何错误,编译得很好,但不会删除var(b) formula(i)的实例。价值仍然存在。怎么了?我根本不使用迭代器,只是遍历formula()的所有实例的循环。

b是一个整数。基本上是我试图删除的var arraylist中元素的索引。

2 个答案:

答案 0 :(得分:2)

使用集合API时,必须覆盖equals和hashcode。否则你会在你的代码中看到很多不可预知的结果......

如果您是Java新手,请养成覆盖equals,hashcode和toString方法的习惯。

答案 1 :(得分:2)

如果b =键,则最好是对象。这里对象b应该具有与键相同的hashCode,并且equals()方法应该返回true。在Java中,两个对象 obj1 obj2 被认为是相同的,应满足以下条件。

  1. obj1.hashCode()== obj2.hashCode()
  2. obj1.equals(obj2)== true