2015-10-16 106 views
1
public boolean contains1(Object o) { 
    System.out.println("ListIterator Approach: "); 
    ListIterator <E> listIterator = list.listIterator(); 
    //System.out.println("true true true"+o); 

    while (listIterator.hasNext()) { 
     // System.out.println(listIterator.next()); 

     System.out.println("\n" + "0: " + o + " next" + listIterator.next() + "\n"); 

     if ((listIterator.next()).equals(o)) return true; 

    } 
    return false; 
} 

我想重載包含方法使用迭代器比較迭代器下一個值和給定的對象。但結果總是假的。 請幫忙解決這個問題。 謝謝!如何比較通用值和對象

回答

2

您正在比較o與第二個下一個,因爲您稱爲listIterator.next()兩次。

4

您每撥打iterator兩次,即打電話next()方法。

System.out.println("\n"+"0: "+o+" next"+listIterator.next()+"\n"); // once 

     if((listIterator.next()).equals(o)) // twice 
      return true; 

因此,條件永遠不會令人滿意。

如果你想在裏面多次使用該對象,將它分配給一個引用並使用它。不要多次撥打next()