我有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/

10-11 20:15