java - 添加到 ArrayList 对象的 ListIterator

标签 java arraylist iterator listiterator

我正在编写一个程序,在不使用任何 ArrayList 方法的情况下使用 ListIterator 操作 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);
}

最佳答案

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

关于java - 添加到 ArrayList 对象的 ListIterator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34145996/

相关文章:

java - 无法在 AnchorPane 内调整 AnchorPane 的大小

java - 在 JCodeModel 中定义枚举常量体

java - 如何同步读取和写入套接字?

java - Java 中的构造函数重载

java - 如何将对象数组列表(ArrayLists)转换为字节数组?

java - 我想在 HttpURLConnection android 中发布数组参数

java - 如何对这个冒泡排序进行反向排序?

c++ - 如何将具有 `next()` 方法的类迭代器转换为常规 `begin`/`end` 迭代器对?

java - 从获取 java.util.ConcurrentModificationException 的 Vector 中删除列表

c++ - 正确迭代 vector 的建议