2017-01-25 61 views
0

我是新來的計算機科學,所以請原諒我的無知。對於LinkedList that is in Java, removeLastOccurrence方法使用equals方法之間的對象傳入或它只是比較內存位置?LinkedList removeLastOccurrence

+1

閱讀[LinkedList'的規範](https ://docs.oracle.com/javase/8/docs/api/java/util/LinkedList.html#removeLastOccurrence-java.lang.Object-)。它指導你[Deque'的規格](https://docs.oracle.com/javase/8/docs/api/java/util/Deque.html#removeLastOccurrence-java.lang.Object-),它告訴你正是這個方法所做的。 – Misha

回答

2

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被具體覆蓋以實現值相等,否則它將默認爲身份相等(即通過比較內存地址,如==對象)