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;
}
我正在尝试使用迭代器重载contains方法来比较迭代器的下一个值和给定的对象。但结果总是错误的。 请帮忙解决这个问题。 谢谢!
答案 0 :(得分:4)
您每次都在next()
上调用iterator
方法两次。
System.out.println("\n"+"0: "+o+" next"+listIterator.next()+"\n"); // once
if( (listIterator.next()).equals(o)) // twice
return true;
因此,条件永远不会令人满意。
如果要在内部多次使用该Object,请将其分配给引用并使用它。请勿多次致电next()
。
答案 1 :(得分:2)
您正在将o
与下一秒进行比较,因为您曾两次致电listIterator.next()
。