添加到 ArrayList 对象的 ListIterator

Adding to a ListIterator of an ArrayList Object

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

我的add方法是遍历ArrayList,将每个元素与要添加的数字进行比较,这样就可以避免重复。 OurSet() 是 class 的构造函数。我还重新定义了 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);
}

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