我正在声明以下两个类:
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中元素的索引。
答案 0 :(得分:2)
使用集合API时,必须覆盖equals和hashcode。否则你会在你的代码中看到很多不可预知的结果......
如果您是Java新手,请养成覆盖equals,hashcode和toString方法的习惯。
答案 1 :(得分:2)
如果b =键,则最好是值对象。这里对象b应该具有与键相同的hashCode,并且equals()方法应该返回true。在Java中,两个对象 obj1 和 obj2 被认为是相同的,应满足以下条件。