如何比较通用值和对象

时间:2015-10-16 10:30:29

标签: java

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方法来比较迭代器的下一个值和给定的对象。但结果总是错误的。 请帮忙解决这个问题。 谢谢!

2 个答案:

答案 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()