添加到 ArrayList 对象的 ListIterator

Posted

技术标签:

【中文标题】添加到 ArrayList 对象的 ListIterator【英文标题】:Adding to a ListIterator of an ArrayList Object 【发布时间】:2016-03-12 18:56:27 【问题描述】:

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

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

当我测试这两种方法时,似乎 add 方法实际上并没有添加任何东西(或者 print 语句没有显示它)。下面使用 main 方法的输出是空白的,我不太清楚为什么。我对代码进行了几次跟踪,并在方法中放置了打印语句,以确保它们确实贯穿每一行。在 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);

【问题讨论】:

离题但:set += item + " "; 避免循环中的字符串连接。请改用StringBuilder 及其append 方法。示例:***.com/a/1532483/1393766,关于此主题的问题:***.com/questions/14927630/… 【参考方案1】:

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

【讨论】:

以上是关于添加到 ArrayList 对象的 ListIterator的主要内容,如果未能解决你的问题,请参考以下文章

如何在java中将对象添加到ArrayList中

如何把数值或者对象添加到ArrayList集合

将对象添加到指定索引处的 ArrayList

面向对象将项目添加到 arrayList

将对象添加到 ArrayList<String>

reduce 阶段遍历对象添加到ArrayList中的问题