# indexOutOfBoundsException bei LinkedList



## dweiner (22. Nov 2008)

Hallo, 

ich bekomme bei einem Programm zeitweise (nur manchmal, nicht immer) eine IndexOutOfBoundsException ausgegeben. Leider weiß ich überhaupt nicht woran das liegen könnte. Die Codezeile, die mir von eclipse angezeigt wird (also da wo der Fehler sein sollte) ist eine Zeile ohne Code - also irgendwie schon von Grund auf komisch. Der Fehler scheint irgendwie in Zusammenhang mit einer LinkedList zu stehen. Gibt es da bei einer LinkedList irgendwas besonderes zu beachten? Hier mal die konkrete Fehlermeldung:

java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
	at java.util.LinkedList.entry(Unknown Source)

Wäre super, wenn mir da jemand auf die Sprünge helfen könnte! Wie gesagt, der Fehler tritt nur sporadisch auf - das ist irgendwie das Verzwickte an der Sache....

Gruß
Dominik


----------



## ARadauer (22. Nov 2008)

zeig uns deinen code...
Index: 0, Size: 0 
bedeutet, dass du irgendwo auf das element 0 zugreifst, das wäre das erste element, die größe ist aber 0, -> fehler


----------



## dweiner (22. Nov 2008)

```
treatCandidatesBuy = new LinkedList<BuyOffer>();
		for (int i = 0; i < storage.getBuyoffers().size(); i++) {
			if (request.getPrice() <= storage.getBuyoffers().get(i).getPrice()){
				treatCandidatesBuy.add(storage.getBuyoffers().get(i));
				treatOccurs = true;
			}
			
		}
		
		if (treatOccurs){
			actualBuyOffer = treatCandidatesBuy.get(0);
			}
			
			int size = treatCandidatesBuy.size();
			for (int i = 0; i < size; i++) {
				treatCandidatesBuy.removeFirst();
				
			}
```

Also im Prinzip hab ich 2 Listen mit Objekten, auf die ich zugreife: treatCandidateBuy und storage.getBuyOffers()
Irgendwo scheint da der Fehler zu liegen. Am wahrscheinlichsten ist es vielleicht bei der Letzten For-Schleife - da möchte ich alle Elemente der Liste "treatCandidateBuy" mit removeFirst löschen - evtl tritt da so ein Fehler auf, wobei er wie gesagt nur sporadisch auftritt....

Gruß
Dominik


----------



## Landei (23. Nov 2008)

Warum schreibst du nicht einfach treatCandidatesBuy.clear() ?


----------



## stikio (7. Dez 2011)

sooo,
ich grab den thread hier mal wieder aus.

hab inzwischen auch aufgegeben den fehler zu finden...

bekomme die gleiche Meldung:


```
Exception in thread "Thread-8" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
	at java.util.LinkedList.checkElementIndex(LinkedList.java:553)
	at java.util.LinkedList.get(LinkedList.java:474)
	at mainPackage.Window$ueberwachung2.run(Window.java:3417)
```

im code tritt der Fehler an folgender Stelle auf:


```
TableModel jTable1Model2 = 
								new DefaultTableModel(				// neues Table Model anlegen und danach dem bestehenden JTable zuweisen.
										new String[][] { 
										{	
											nachbarZellenInfos.get(0).trim(),nachbarZellenInfos.get(1).trim(),nachbarZellenInfos.get(2).trim(),
											lacListe.get(0), cellIDListe.get(0),nachbarZellenInfos.get(3).trim(),nachbarZellenInfos.get(4).trim(),nachbarZellenInfos.get(5).trim(),
											nachbarZellenInfos.get(6).trim(),nachbarZellenInfos.get(7).trim()
										},
										{										},
										new String[] { "Chan", "RS", "dBm", "LAC", "Cell ID", "MCC", "MNC", "BCC", "C1", "C2" });
						nachbarzellenTable.setModel(jTable1Model2);
```

LinkedList wird mit Strings gefüllt, Table wird mit den Daten aus den LinkedLists befüllt und danach werden die Lists gecleared() und danach geht das ganze wieder von vorne los.

Vielleicht hat hier schonmal jemand mit den Problem zu tun gehabt.


----------



## tfa (7. Dez 2011)

Eine dieser Listen scheint leer zu sein. Wenn du dann get(0) darauf aufrufst, kommt der Fehler.


----------



## Michael... (7. Dez 2011)

Vermutlich greifst Du aus verschiedenen Threads unsynchronisiert auf die Liste zu?
Welche Zeile entspricht denn der Zeile 3417?

Hinweis: Ich würde statt jedesmal das TableModel auszutauschen ein eigenes schreiben, das die Liste direkt nutzt. Denn eigentlich ändert sich ja nicht das Model sondern nur die Daten.


----------



## stikio (7. Dez 2011)

```
lacListe.get(0), cellIDListe.get(0),nachbarZellenInfos.get(3).trim(),nachbarZellenInfos.get(4).trim(),nachbarZellenInfos.get(5).trim(),
```

gerade die in der auf 3 Listen zugegriffen wird.

die beiden Listen lacListe und cellIDListe wurden erst kürzlich implementiert, der fehler trat aber schon davor auf, deshalb schliesse ich die beiden mal aus.


----------



## tfa (7. Dez 2011)

Dann schau doch einfach, was in den Listen steht, wenn der Fehler auftritt.
Den Tipp mit dem eigenen TableModel solltest du umsetzen. DefaultTableModel mit Arrays ist übles Gefrickel, was man  allermeistens vermeiden sollten.


----------



## Michael... (7. Dez 2011)

stikio hat gesagt.:


> [die beiden Listen lacListe und cellIDListe wurden erst kürzlich implementiert, der fehler trat aber schon davor auf, deshalb schliesse ich die beiden mal aus.


Dann wäre es interessant wie der Code vorher aussah und wo da der Fehler aufgetreten ist.


----------



## stikio (7. Dez 2011)

> Dann wäre es interessant wie der Code vorher aussah und wo da der Fehler aufgetreten ist.




der sah genauso aus, nur ohne die beiden get Methoden von lacListe und cellIDListe 




> Dann schau doch einfach, was in den Listen steht, wenn der Fehler auftritt.



werd mal versuchen n paar System out println mit einzubauen um mir die inhalte der listen bei jedem abruf geben zu lassen.


danke schonmal für eure antworten, ich werd das ma umsetzen und berichten


----------

