LinkedList 中的新元素添加到哪里?在头部之后还是在尾部?

Where does the new element in the LinkedList gets added? in after the head or at the tail?

我在一些博客上读到新节点被添加到最前面。但是当我检查 linkedList 的源代码时,它在最后添加了 node 并保持列表的 head 地址不变,这应该是理想的行为。

public boolean add(E e) {
        linkLast(e);
        return true;
}
 void linkLast(E e) {
        final Node<E> l = last;
        final Node<E> newNode = new Node<>(l, e, null);
        last = newNode;
        if (l == null)
            first = newNode;
        else
            l.next = newNode;
        size++;
        modCount++;
 }

单向链表和双向链表的节点添加行为有什么不同吗?

Java 的 LinkedList 实现是一个双向链表。所以你可以使用它的所有功能。如果您查看可以使用的方法,就会发现 addLast 和 addFirst 的作用与名称完全相同。而 List 接口的 add 方法的文档说它回退到 addLast。 这应该可以回答您的问题。

通常在单链表中 addLast 是 O(n),在双链表中它是 O(1),因为您也有对尾部的引用。 AddFirst 总是 O(1).

来自the documentation

add(E e)

Appends the specified element to the end of this list.

(我的重点)

据我所知,java 库中没有单个 linked 列表。您可以创建自己的。我认为唯一的区别在于:保存或不保存 link.