0

我声明以下两个类:

   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)for的实例formula(i)。价值依然存在。怎么了?我根本没有使用迭代器,只是一个循环遍历formula().

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

4

2 回答 2

2

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

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

于 2012-11-21T05:29:32.240 回答
2

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

  1. obj1.hashCode()== obj2.hashCode()
  2. obj1.equals(obj2)== 真
于 2012-11-21T05:34:34.633 回答