Arrays, Listen usw...

Benzol

Erfahrenes Mitglied
Ich blicke so langsam nicht mehr durch. In PHP hatte ich ein Array, in das ich beliebig viele Dinge hinzufügen, ändern und löschen konnte. In Java habe ich das Gefühl, das es mir unnötig schwer und kompliziert gemacht wird.
Nach Grüdnlicher Suche bei Google bin ich nur noch mehr Verwirrt, welche, nennen wir es mal Collection, ich denn nun Verwenden soll.
Um mal ein simples Beispiel zu nennen - ich erstelle ein String[], in den ich die Namen von Grafikdateien speichere.
In einer Schleife, welche von 0-3 Läuft, möchte ich dann jeweils den Index entsprechenden Wert aus dem Array erhalten. So wie ich es gemacht habe, gibt mir der Compiler leider nur eine Exception aus... sagt aber nicht, welche genau. Ich hoffe Ihr könnt mir da helfen.
Hier nochmal ein wenig Code von der besagten Stelle.
Code:
String[] list = {
		"cf.png", "sd.png", "xd.png", "msp.png"
};

int i = 0;

for(File file : files)
{
	if(fsv.getSystemTypeDescription(file).equals("Wechseldatenträger"))
	{
		String icon = list[i];
		ListItem item = new ListItem(icon, fsv.getSystemTypeDescription(file));	
		DriveList.addElement(item);
	}
	i++;
}
 
Ich denke mal in deiner files Collections sind mehr Elemente als im Array vorhanden und dann gibt es wahrscheinlich eine ArrayIndexOutOfBoundsException.

Sicherer ist dann:
Java:
String[] list = {
		"cf.png", "sd.png", "xd.png", "msp.png"
};

for(int i = 0; i < files.size() && i < list.length; i++){
   File file = files.get(i);
   if(fsv.getSystemTypeDescription(file).equals("Wechseldatenträger"))
	{
		String icon = list[i];
		ListItem item = new ListItem(icon, fsv.getSystemTypeDescription(file));	
		DriveList.addElement(item);
	}
}

Du musst in jedem Fall bei sowas prüfen ob die die beiden Collections/Arrays die gleiche Anzahl an Elementen enthalten, bzw. ob files weniger oder gleich viele Elemente enthält.
 
Argh, ich bin wirklich ein wenig aus der Übung. Das hochzählen von i darf natürlich nur innerhalb der Klammern geschehen, da ja sonst die 3 wirklich überschritten wird. Jetzt funktioniert es auch :)

Dann hätte ich jetzt aber noch eine andere Frage. Und zwar brauche ich eine Art Array, wo ich bei der Erstellung noch nicht weiss, wie groß es sein wird. Es sollte Mehrdimensional sein, sodass ich alle Informationen über eine Datei darin speichern kann. Mache ich sowas mit einer ArrayList oder welche Collection würde sich da anbieten?
 
Ja eine ArrayList oder eine HashMap. Wenn du die Dateien schnell wiederfinden willst, dann könntes du einen Key vergeben und ein Objekt mit den Informationen über die Datei zu dem Key in der Map speichern.

Ansonsten nimm eine ArrayList und erstelle dir ein neue Klassen deren Objekte dann die Informationen zur Datei halten kann und die du dann in die ArrayList packen kannst.
 
Zurück