gpt4 book ai didi

java - 覆盖 LinkedList 中的 indexOf 以检查身份,而不是相等性

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:48:35 27 4
gpt4 key购买 nike

我有一个 List(实际上是一个 LinkedList),我向其中添加了实现 equals 方法的 Items。

问题是我添加了相等但不相同的项目(如两个初始化对象)。现在,当我想获取第二个添加的项目的索引时,我当然会获取第一个项目的元素,因为 indexOf 搜索相等性而不是标识。

我试图创建我自己的 LinkedList 子类并覆盖 indexOf 方法,但这是不可能的,因为我无法访问这两个子类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'

}
}

我的意图:我需要一个对象列表,我想在其中存储初始化的对象并在以后编辑它们。

最佳答案

自己做迭代,indexOf 只是一个辅助方法:

static int indexOfById(List<?> list, Object searchedObject) {
int i = 0;
for (Object o : list) {
if (o == searchedObject) return i;
i++;
}
return -1;
}

关于java - 覆盖 LinkedList 中的 indexOf 以检查身份,而不是相等性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18015367/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com