我有50个RANDOM整数的arraylist。我要求用户删除一个数字,然后从列表中删除该数字的所有出现。我使用
while (randInts.contains(removeInt) )
{
if (randInts.get(i) == removeInt)
randInts.remove(randInts.get(i));
i++;
}
System.out.println("\n" + randInts.toString());
System.out.println("\n" + randInts.size());`
问题的另一部分是提示用户输入另一个数字。每次出现第二个提示编号后,都会插入从上方删除的编号。我在不断获取IndexOutOfBoundsException时遇到第二部分的问题。
最佳答案
使用LinkedList
代替;当您需要按顺序遍历而不是真正的随机访问,并且需要在列表中间插入和删除元素时,这是一个更好的选择。
您可以通过遍历列表的迭代器来完成所需的操作(删除removeInt
的所有实例,并在removeInt
的每个实例之后插入insertAfterInt
):
ListIterator<Integer> li = randInts.listIterator();
while(li.hasNext()) {
int i = li.next();
if(removeInt == i) // assumes removeInt is an int; use equals() for Integer
li.remove();
if(insertAfterInt == i)
li.add(removeInt); // the iterator will skip this element, so it won't get removed
}
关于java - 将对象插入arraylist,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18836900/