Я пытаюсь создать программу, которая удаляет любые дубликаты строк, однако, с помощью кода ниже, который должен работать на моих глазах, я получаю исключение ArrayIndexOutOfBoundsException; хотя я не понимаю, почему.ArrayIndexOutOfBounds от управления списком
Кодекса
import java.util.Arrays;
import java.util.ArrayList;
import java.util.List;
public class RemoveDuplicates
{
public static void main (String[] args)
{
List<String> numberSequence = new ArrayList<String>(Arrays.asList(args));
for (int n = 0; n < numberSequence.size() - 1; n++)
{
System.out.println("\n==============================\nn element id: "
+ n + " ||| containing: " + numberSequence.get(n));
for (int j = n+1; j < numberSequence.size(); j++)
{
System.out.println("j element id: " + j + " ||| containing: " +
numberSequence.get(j));
if(numberSequence.get(n).equals(numberSequence.get(j)))
{
System.out.println("*\nelement: ["+j+"] was removed\n*");
numberSequence.remove(j);
n--;
j--;
}
}
}
}
}
Результат для командной строки арг:
==============================
n element id: 0 ||| containing: 2
j element id: 1 ||| containing: 10
j element id: 2 ||| containing: 20
j element id: 3 ||| containing: 10
j element id: 4 ||| containing: 2
*
Element: [4] was removed
*
j element id: 4 ||| containing: 7
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
at java.util.ArrayList.elementData(ArrayList.java:400)
at java.util.ArrayList.get(ArrayList.java:413)
at RemoveDuplicates.main(RemoveDuplicates.java:17)
Как мне это, потому что четвертый элемент был удален, его должен повторить проверку в том же месте, и это будет предыдущий пятый элемент.
Я неправильно понял (n + 1): th элемент занимает место n: th элемента, когда элемент n удаляется?
Не можете просто добавить его в 'Set'? – prabugp
Я думал об этом; но действительно ли это стоит хлопот? Мое предположение, и я думаю, что я непрофессионал, это то, что для этого потребуется больше вычислительной мощности. И поэтому я мог бы также узнать, почему проблема возникает сейчас. –
Я считаю, что вы не можете удалять элементы из коллекции, итерации, если вы не итерации с реальным Iterator –