java - java中链表的boolean add(E element)方法返回false时

标签 java collections

java中链表的boolean add(E element)方法返回false时?

我研究了 LinkedList 实现,发现 boolean add(E element) 等同于 void addLast(E element) 方法

唯一的区别是

addLast(E element)方法实现:

void addLast(E e) {
        Node<E> l = last;
        Node<E> newNode = new Node<>(l, e, null);
        last = newNode;
        if (l == null)
            first = newNode;
        else
            l.next = newNode;
        size++;
    }

并添加(E元素)方法实现:

boolean add(E e) {
        addLast(e);
        return true;
    }

最佳答案

因为 java.util.LinkedList 实现了 Collection 接口(interface),如果集合有,该接口(interface)中的 add() 方法应该返回 true因操作而改变。对于链表,这总是正确的。

这是一个 add() 返回 false 的例子:

Set<Integer> set = new HashSet<>();
System.out.println(set.add(1));
System.out.println(set.add(2));
System.out.println(set.add(1));

输出:

true
true
false

第三个 add 返回 false 只是因为集合没有因为操作而改变(它已经包含 1)。

关于java - java中链表的boolean add(E element)方法返回false时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58017199/

相关文章:

java - JDBC 根据列中的值发现行

c# - .NET 4.0 System.Collections.Concurrent 集合在 .NET 3.0 SynchronizedCollection 的功能中添加了什么?

具有索引、键和值的 Java 集合

.net - .Net中具有Count属性的最小接口(interface)是什么

java - ArrayList.java 中 List 接口(interface)的冗余实现

java - 我的循环有些东西不工作。它可以运行但不循环

c# - 在泛型类实例化上创建了多少个实例?

java - 根据其中一列将输入文件分成多个文件

java - 如何替换java集合中的对象?

java - 使用循环从字符串中删除特定字符串