gpt4 book ai didi

java - 有人可以帮助解释这个indexOf()实现是如何工作的吗?

转载 作者:行者123 更新时间:2023-12-01 17:28:53 24 4
gpt4 key购买 nike

这是 Oracle 网站上 LinkedListindexOf() 的示例实现。我对 if 循环在这里的工作原理有点困惑:

public int indexOf(E e) {
for (ListIterator<E> it = listIterator(); it.hasNext(); )
if (e == null ? it.next() == null : e.equals(it.next()))
return it.previousIndex();
// Element not found
return -1;
}

因此,ListIterator 对象被创建在列表的头部。 for 循环一直持续到迭代器到达列表末尾,if 循环检查是否找到目标对象。但我不明白的部分是,为什么 if 循环在 e == null 时检查 it.next() == null ?有人可以帮助我了解当输入 e 为空时它是如何完成的吗?

最佳答案

仅当e == null时,循环才会检查it.next() == null,这样做是为了避免在计算e.equals(时出现NullPointerException) it.next()).

如果e != null,则调用常规e.equals()方法。

null 是一个有效的“元素”,可以插入到 LinkedList 中,因此必须考虑到这一点。

不插入最后一个元素的位置。请注意,与教科书数据结构不同,其中链接列表中的最后一个元素为 null,在这里 - 当您到达最后一个元素时 - it.hasNext() 将被评估为 false,而不让您看到这个“垃圾”元素。

关于java - 有人可以帮助解释这个indexOf()实现是如何工作的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12905202/

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