gpt4 book ai didi

java - 为什么 Java 集合中的 contains()/indexOf() 使用 o.equals(e) 而不是 e.equals(o)?

转载 作者:行者123 更新时间:2023-12-02 09:09:36 24 4
gpt4 key购买 nike

为什么这些方法是 contains()indexOf()在使用 o.equals(e) 而不是 e.equals(o) 定义的 Java 集合框架中(其中 o 是方法,e 是集合中的元素)?

有人知道这是什么原因吗?

最佳答案

因为已知o不为空,但e不一定为空。以 LinkedList 代码为例:

for (Entry e = header.next; e != header; e = e.next) {
if (o.equals(e.element))
return index;
index++;
}

在此示例中,这样做可以避免集合中每个项目的 e.element 为 null 的情况。以下是考虑到 o 为 null 的完整代码:

if (o == null) {
for (Entry e = header.next; e != header; e = e.next) {
if (e.element == null)
return index;
index++;
}
} else {
for (Entry e = header.next; e != header; e = e.next) {
if (o.equals(e.element))
return index;
index++;
}
}

关于java - 为什么 Java 集合中的 contains()/indexOf() 使用 o.equals(e) 而不是 e.equals(o)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2922550/

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