ArrayList index out of bounds exception
Vor kurzem während der Verwendung von arrayList fand ich ein sonderbares Problem. Ich will, dass 2 Elemente in der arraylist und möchte zu halten Objekt1 in element 0 und objekt2 in element1.
Bin ich der Entscheidung, diese in einer Schleife.
Wenn es passiert, hinzufügen des ersten Elements, dessen werfen indexOutofBounds. Als pro-java-doc als der index ist größer als die Größe sein, dies zu tun.
public static void main(String[] args)
{
ArrayList<String> list = new ArrayList<String>();
list.add(1,"SECONDITEM"); //throwing due to size is not set
list.add(0,"FIRSTITEM");
int postn=0;
for(String item:list){
System.out.println("Position "+postn+" :"+item);
postn++;
}
}
Dann habe ich versucht setup, die andere Elemente als Platzhalter in 0,1-element und versuchte gleichen
public static void main(String[] args)
{
ArrayList<String> list = new ArrayList<String>();
list.add(0,"x");
list.add(1,"y");
list.add(1,"SECONDITEM");
list.add(0,"FIRSTITEM");
int postn=0;
for(String item:list){
System.out.println("Position "+postn+" :"+item);
postn++;
}
}
Output:
Position 0 :FIRSTITEM
Position 1 :x
Position 2 :SECONDITEM
Position 3 :y
, Wie man über dieses Problem. Eine Möglichkeit, die ich gefunden ist, um das element in den index und fügen Sie das element. Gibt es eine bessere option.
public static void main(String[] args)
{
ArrayList<String> list = new ArrayList<String>();
list.add(0,"x");
list.add(1,"y");
list.remove(1);
list.add(1,"SECONDITEM");
list.remove(0);
list.add(0,"FIRSTITEM");
int postn=0;
for(String item:list){
System.out.println("Position "+postn+" :"+item);
postn++;
}
}
Position 0 :FIRSTITEM
Position 1 :SECONDITEM
- Erm, keine
ArrayList
? - Erstellen Sie Ihre eigenen LinkdList Klasse behandelt, in diesem Fall. Oder fügen Sie in so viele wie Standardwerte, wie Sie möchten, um die ArrayList, bevor Sie eine index-spezifische, fügt
- ich habe das gleiche issui, warum?
Du musst angemeldet sein, um einen Kommentar abzugeben.
.add () - Methode einfügen des Elements an der angegebenen position und schieben Sie die anderen Elemente entsprechend
überschreiben Sie den Wert in bestimmten index, den Sie verwenden müssen, die .set(position, Wert)
versuchen Sie, die set-Methode ..
nun wird es wieder die nur zwei Werte.
Das Problem ist ... Sie versuchen, verwenden Sie eine
List
in einer Weise, die es war nicht beabsichtigt, verwendet werden. Als Sie herausgefunden habe, kann man nicht festlegen oder hinzufügen um einen index, der außerhalb des Bereichs der aktuellen Größe.Wenn Sie im Voraus wissen, die Größe, die Sie brauchen, und es ist eine Feste Größe, mit einem
String[]
ist die bessere Wahl.Wenn Sie wirklich wollen/brauchen, eine dynamische Struktur, mit der random access setzt unabhängig von der aktuellen Größe, schreiben Sie Ihre eigene Methode zum füllen der Liste wenn nötig:
Wenn Sie aufrufen, in dieser Reihenfolge:
Das Sie hinzufügen möchten, auf position "1", aber nichts wurde Hinzugefügt, um die Liste noch. Ich glaube, dass ist der Grund, warum Sie den Fehler. Stattdessen werden Sie wahrscheinlich wollen, um zu verwenden, einfach:
Da es eine leere Liste. Sie können auch den index, aber Sie haben, erhöht jeder Zeit. Macht das Sinn?