2017-01-25 3 views
0

私はコンピュータサイエンスには新しいので、私の無知を許してください。 LinkedList that is in Javaの場合、 の場合、removeLastOccurrenceメソッドは、渡されたオブジェクト間でequalsメソッドを使用しますか、単純にメモリ位置を比較しますか?LinkedList removeLastOccurrence

+1

[LinkedList'の仕様] ://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によると、そのメソッドのソースは次のとおりです。削除したいオブジェクトがnullある場合

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でない場合は、 equalsメソッドを使用します。しかし、 equalsが明示的に値の等価を実装するためにオーバーライドされない限り、それはアイデンティティの等価性になります(つまり、 ==などのメモリアドレスをオブジェクトと比較することによって)。