添加到ArrayList对象的ListIterator

时间:2015-12-08 00:35:15

标签: java arraylist iterator listiterator

我正在编写一个程序,使用ListIterator操作ArrayList而不使用任何ArrayList方法。在这种情况下,ArrayList应该表现得像一个集合。

我的add方法遍历ArrayList并将每个元素与要添加的数字进行比较,以便可以避免重复。 OurSet()是类的构造函数。我还重新定义了toString方法,使用ListIterator方法进行打印。

当我测试这两种方法时,似乎add方法实际上没有添加任何东西(或者print语句没有显示它)。使用下面主要方法的输出是空白的,我不太清楚为什么。我对代码进行了几次跟踪,并在方法中放置了print语句,以确保它们确实贯穿了每一行。在toString方法中,它永远不会进入while循环。代码如下,任何帮助表示赞赏!

OurSet()
{
//      list is the ArrayList object, it was defined earlier and now instantiated
    list = new ArrayList();
//      iter is the ListIterator object, it was defined earlier and now instantiated
    iter = list.listIterator();
}

public void add(int x)
{
    while(iter.hasNext())
    {
        int item = (Integer) iter.next();
        if(item == x)
            break;
    }
    iter.add(new Integer(x));
}

public String toString()
{
    String set = "";
    while(iter.hasNext())
    {
        int item = (Integer) iter.next();
        set += item + " ";
    }
    return set;
}

这是我的主要方法。

public static void main(String args[])
{
    OurSet set = new OurSet();
    set.add(50);
    System.out.println(set);
}

1 个答案:

答案 0 :(得分:0)

实例化IteratorList对象将使其从头开始。由于我实例化对象的唯一时间是在构造函数中,它已经在add方法中到达列表的末尾,并且toString方法无法再次遍历它。通过在iter方法中重新实例化toString,列表已正确打印出来。