我有一个List
(实际上是 a LinkedList
),并向其中添加了实现 - 方法的项目equals
。
问题是我添加了相等但不相同的项目(比如两个初始化的对象)。现在,当我想获取第二个添加的项目的索引时,我当然会得到第一个项目的元素,因为indexOf
搜索的是平等而不是身份。
我尝试创建自己的子类LinkedList
并覆盖indexOf
-method,但这是不可能的,因为我既无权访问子类Node
也无权访问 Node-Element first
。
这是一个例子:
public class ExampleObject {
int number;
public ExampleObject(){
number = 0;
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null) return false;
if (getClass() != obj.getClass()) return false;
ExampleObject other = (ExampleObject) obj;
if (number != other.number) return false;
return true;
}
public static void main(String[] args) {
LinkedList<ExampleObject> list = new LinkedList<ExampleObject>();
ExampleObject one = new ExampleObject();
ExampleObject two = new ExampleObject();
list.add(one);
list.add(two);
System.out.println(list.indexOf(one)); // '0' as expected
System.out.println(list.indexOf(two)); // '0', but I want to get '1'
}
}
我的意图:我需要一个对象列表,我想在其中存储初始化对象并稍后编辑它们。