java - 链表删除最后一次发生

标签 java java-8 doubly-linked-list

我是计算机科学的新手,所以请原谅我的无知。对于LinkedList that is in Java , removeLastOccurrence 方法是在传入的对象之间使用 equals 方法还是只是比较内存位置?

最佳答案

根据http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8u40-b25/java/util/LinkedList.java ,该方法的来源是:

public boolean removeLastOccurrence(Object o) {
    if (o == null) {
        for (Node<E> x = last; x != null; x = x.prev) {
            if (x.item == null) {
                unlink(x);
                return true;
            }
        }
    } else {
        for (Node<E> x = last; x != null; x = x.prev) {
            if (o.equals(x.item)) {
                unlink(x);
                return true;
            }
        }
    }
    return false;
}

因此,如果您要删除的对象是 null,那么它会在列表中查找 null 值。如果对象不为 null,则它使用 equals 方法。但是,请记住,除非专门重写 equals 来实现值相等,否则它将默认为身份相等(即,通过比较内存地址,就像 == 对对象所做的那样)

关于java - 链表删除最后一次发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41842270/

相关文章:

java - 如何在 Java 中创建 'cooldown rectangle' 效果?

c - 销毁 C 中的双向链表

c++ - 删除 std::list 的内容

java - 位运算符在 Java 中究竟是如何工作的?

java - collect(supplier, accumulator, combiner)的组合器的组合顺序在哪里定义?

java - 如何测试我的 FIX 客户端?那里有我可以使用的假 FIX 交易所吗?

java - 断言列表恰好包含一个满足条件的元素

c - LinkedList 两次读取根的值

java - 如何设置 JavaFX WebView 的编码?

java - BeanCreationException,Spring 启动