访问 linkedList 中的元素 [duplicate]

Accessing Element In linkedList [duplicate]

提问人:Er Rahul Raj 提问时间:11/15/2023 最后编辑:Mark RotteveelEr Rahul Raj 更新时间:11/15/2023 访问量:144

问:

LinkedList<String> linkedList = new LinkedList<>();

linkedList.add("Java");
linkedList.add("Python");
linkedList.get(1); 

get 的内部代码流

public E get(int index) {
    checkElementIndex(index);
    return node(index).item;
}

private void checkElementIndex(int index) {
     if (!isElementIndex(index))
     throw new IndexOutOfBoundsException(outOfBoundsMsg(index));
}

我打电话给linkedList.get(1);获取链表中的第二个元素。我的问题是,uf LinkedList 内部为每个元素创建节点,那么在访问元素 () 时如何考虑索引概念?linkedList.get(1)

Java 集合

评论

1赞 Ivar 11/15/2023
如果你检查同一类中的实现,你就会得到答案。它将从第一个节点或最后一个节点开始(取决于您要查找的索引是更接近起点还是终点),然后循环,直到找到您请求的索引。node(int)
0赞 Er Rahul Raj 11/15/2023
这是否意味着,链表内部使用数组概念?
3赞 Ivar 11/15/2023
不,它没有。

答:

1赞 Georgii Lvov 11/15/2023 #1

此索引与 中的数组索引不同。 在 中,后台的 get by index 方法只是一个 for 循环,由于列表是有序的,因此它将通过遍历列表的元素来简单地返回您需要的元素。ArrayListLinkedList

在内部查找在方法中调用的方法。LinkedListNode<E> node(int index)get(int index)

评论

0赞 Er Rahul Raj 11/15/2023
非常感谢Georgii Lvov!它真的帮助我理解了内部机制——