【发布时间】: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方法。示例:stackoverflow.com/a/1532483/1393766,关于此主题的问题:stackoverflow.com/questions/14927630/…
标签: java arraylist iterator listiterator