arrayList outOfbounds.

  • Themenstarter Themenstarter w00t3
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
W

w00t3

Gast
Hallo,


wollte mal kurz eine ArrayList testen wie das geht:


Code:
ArrayList<String> list = new ArrayList<String>();
String text = "hallo";

for(int i = 0 , i < maxWert.length ; i++)
{

     list.add(i, text);	

     System.out.println(list.get(i));

}
Code:
fehler: java.lang.IndexOutOfBoundsException index: 1 size: 0
java.util.ArrayList.add(Unknown Source)

Warum die Fehlermeldung?
 
danke, und wie greife ich bei einer ArrayList dann auf einen bestimmten index zu mit .get(); wenn ich nicht weiß an welcher stelle z.B. etwas ist da ich beim adden ja nicht sagen kann wo es hin soll?
 
trazzag hat gesagt.:
wenn du einen eindeutigen Identifizierer brauchst, verwende eine HashMap oder so...

wenn ich mit list.get(i); einen string holen möchte bekomme ich die gleiche obige fehlermeldung ??? obwohl die add methode geändert wurde?
 
Hallo,

meine Anforderung an das Array: seis jetzt Array,ArrayList,Vecotr,HashMap, etc

- die Länge wächst/schrumpft dynamisch mit dem hinzugefügten/entfernten Inhalt
- direkter Zugriff auf bestimmte Elemente der Liste muss gehen
- Geschwindigkeit ist mal nebensächlich hauptsache obige Punkte sind erfüllt.

Ist da ne Hashmap ala:

Code:
	HashMap<String> map = new HashMap<String>();
    	map.put("Hallo);

Bei einer HashMap gibt es keine Methode für einen direkten Zugriff bzw. map.get(i); wobei i= 3 ist z.B.

geht nicht ?
 
Um die Anforderung noch zu präzisieren:

Das "Array" wird einmal beschrieben mit ca. 500-1000 Strings, danach folgen lediglich abfragen auf das Array wobei es möglich sein muss, dass ich den den index bei position 783 oder 417 direkt kann.
 
w00t3 hat gesagt.:
danke, und wie greife ich bei einer ArrayList dann auf einen bestimmten index zu mit .get(); wenn ich nicht weiß an welcher stelle z.B. etwas ist da ich beim adden ja nicht sagen kann wo es hin soll?

Der Index, den du get übergibst, muss einfach <meineArrayList.length() sein
und die Werte werden in der Reihenfolge in der Liste geführt, in der sie
geaddet wurden
 
Leroy42 hat gesagt.:
w00t3 hat gesagt.:
danke, und wie greife ich bei einer ArrayList dann auf einen bestimmten index zu mit .get(); wenn ich nicht weiß an welcher stelle z.B. etwas ist da ich beim adden ja nicht sagen kann wo es hin soll?

Der Index, den du get übergibst, muss einfach <meineArrayList.length() sein
und die Werte werden in der Reihenfolge in der Liste geführt, in der sie
geaddet wurden

ich nehme an du meinst list.size(); ;-)
 
ArrayList#add()

public boolean add(E e)
Appends the specified element to the end of this list.

wie schon gesagt wurde... die elemente kannst du in der reihenfolge, wie diese hinzugefügt wurden, per index abrufen.

das letzte eingefügte element erhälst du mit list.size() - 1, wie du sagtest

#edit 1:
list.size() -> list.size() - 1
 
DaKo hat gesagt.:
list.size()-1

Index ist 0-basierend 😉
nein du hast ja als abbruch bedingung <list.size() ... mit dem -1 wuerdest du den letzten gueltigen index vergessen.


ich komme hier ein bisschen durcheinander.

also generell fuer deine anforderungen ist die ArrayList schon das richtige. Beim hunzufuegen wuerde ich auch ohne index erstmal arbeiten, da dieser hier denk ich die Exception wirft ! du willst an einer stelle etwas hinzufuegen die es in der liste nicht gibt. ein einfaches add regelt das selber, dass der index dann existiert, das andere nicht.

und ueber get bekommst du dann den entsprechenden wert.

hashes (ob set oder maps) sind fuer einen indexbasierten zugriff nicht zu nutzen
 
list.size()-1 müsste das letzt element sein, denn index fängt ja bei 0 an...
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben