Hallo, habe gerade ein Brett vor dem Kopf, es geht um die Fuktion subList(int fromIndex, int toIndex). Also ich will zu der ArrayList list2, noch eine Teilliste dranhängen.
Meine Überlegung: Man soll ja bei der subList-Funktion den ersten Übergabeparameter (fromIndex) einschließlich der Teilliste nehmen, und (toIndex) ausschließlich soweit ich das richtig verstanden habe.
Die ArrayList list2 gibt mir 15 Elemente aus, also muss der letzte Index = 14 sein, daher nehme ich für das Teilarray fromIndex = 15. Ich will 7 Werte in das Teilarray schreiben, also nehme ich toIndex = 22 (ausschließlich). Trotzdem wirft er mir ne Exception .. kann mir jmd helfen ?
hoffe das ist jetzt nich zu unübersichtlich
Ausgabe:
Meine Überlegung: Man soll ja bei der subList-Funktion den ersten Übergabeparameter (fromIndex) einschließlich der Teilliste nehmen, und (toIndex) ausschließlich soweit ich das richtig verstanden habe.
Die ArrayList list2 gibt mir 15 Elemente aus, also muss der letzte Index = 14 sein, daher nehme ich für das Teilarray fromIndex = 15. Ich will 7 Werte in das Teilarray schreiben, also nehme ich toIndex = 22 (ausschließlich). Trotzdem wirft er mir ne Exception .. kann mir jmd helfen ?
hoffe das ist jetzt nich zu unübersichtlich
Java:
import java.util.*;
public class ListTest
{
//Elemente in Liste einfügen
static void fillList(List list)
{
//Zahlen von 0 bis 19 als Zeichenketten (Strings) einfügen
for (int i = 0; i < 20; ++i)
{
list.add("" + i);
}
//Element an der Position 3 entfernen
list.remove(3);
//Erstes Element in der Liste entfernen, das gleich "6" ist
list.remove("6");
}
//Liste vom Anfang bis zum Ende durchlaufen und Elemente ausgeben
static void printList(List list)
{
ListIterator it = list.listIterator();
while (it.hasNext())
{
System.out.print((String)it.next()+" ");
}
System.out.println("\n-");
}
// Aufgabe 42
static void printInverseList(List list)
{
int lastindex = list.size(); // !!
ListIterator inv = list.listIterator(lastindex);
while(inv.hasPrevious())
{
System.out.print(inv.previous()+" ");
}
System.out.println("\n-");
}
// Aufgabe 43
static void remove5List(List list)
{
String temp;
ListIterator it = list.listIterator();
while(it.hasNext())
{
temp = (String) it.next();
if (temp.startsWith("0"))
continue;
if ( temp.endsWith("0") || temp.endsWith("5") )
it.remove();
}
}
// zu Aufgabe 44
static void fillSubList(List list)
{
for (int i = 7; i < 14; ++i)
{
list.add("" + i);
}
}
public static void main(String[] args)
{
//Erzeugen der LinkedList
LinkedList list1 = new LinkedList();
fillList(list1);
printList(list1);
printInverseList(list1);
//Erzeugen der ArrayList
ArrayList list2 = new ArrayList();
fillList(list2);
remove5List(list2);
printList(list2);
printInverseList(list2);
System.out.println("\n\n list2-Groesse:"+list2.size());
// Aufgabe 44
list2.subList(15, 22); // <<-------------------------------
fillSubList(list2);
printList(list2);
}
}
Ausgabe:
Java:
0 1 2 4 5 7 8 9 10 11 12 13 14 15 16 17 18 19
-
19 18 17 16 15 14 13 12 11 10 9 8 7 5 4 2 1 0
-
0 1 2 4 7 8 9 11 12 13 14 16 17 18 19
-
19 18 17 16 14 13 12 11 9 8 7 4 2 1 0
-
list2-Groesse:15
Exception in thread "main" java.lang.IndexOutOfBoundsException: toIndex = 22
at java.util.SubList.<init>(Unknown Source)
at java.util.RandomAccessSubList.<init>(Unknown Source)
at java.util.AbstractList.subList(Unknown Source)
at ListTest.main(ListTest.java:87)
Zuletzt bearbeitet: