Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
hab folgendes Problem. Habe eine .txt Datei, in dieser ist ein Wörterbuch enthalten, in jeder Zeile steht ein Wert der übersetzt werden soll. Nun möchte ich die Werte zur Verarbeitung in ein Array kopieren. Dazu muss ich aber eine Größe beim Array eingeben?
Ich hab das ganze nun so "gelöst", dass ich ein Array "tmp" erstellt habe mit 5000 Feldern und da wird alles rein kopiert. gleichzeitig zähle ich die Zeilen mit zeilenanzahl++ noch mit.
Wenn alles durchlaufen ist werden nur die tatsächlichen Werte auch raus kopiert und in ein neues Array geschrieben und dank der nun gerechneten Zeilenanzahl hab ich ja auch ein richtiges Array.
Aber das ist doch nicht sauber programmiert und wenn ich über 5000 Zeichen hätte würde das Programm nicht mehr laufen...
Wie würdest du das Lösen? Erst die Datei öffnen und die Zeilenanzahl erfassen, schließen, Array anlegen mit genauer anzahl, Datei wieder öffnen und dann Werte rein kopieren?
Ich nehme für sowas immer "java.util.Vector<E>"
Der wächst dymanisch mit,
und mit get(index) kannst du auch auf die Positionen zugreifen.
eine ArrayList geht auch
Edit: da war einer wieder schneller
Ps.: Einer der größtenen Unterschiede zwischen Vector und ArrayList ist,
dass der Vector "threadsafe" ist.
Danke für die Tipps, ich habe mich jetzt für ein ArrayList entschieden...ich hoffe ich habe das richtige genommen, da in meiner Aufgabenstellung steht, dass ich die Methode so anlegen soll: (Zeile 1 ist vorgegeben...)
Java:
public static List< String > tuetwas(String txtFile) throws NullPointerException
{
// ...
List<String> myList = new ArrayList<String>();
//...
return myList}
Passt dann List oder oder muss ich auch auf der linken Seite ArrayList<String> anstatt List<String> schreiben? Also beim Testen bringt er keine Fehler, aber es kann ja sein, dass ich hier Äpfel(List) und Birnen(ArrayList) vergleiche, die zwar auf dem selben Baum wachsen, aber doch nicht ganz das geforderte sind...
laut api:
Note that this implementation is not synchronized. If multiple threads access an ArrayList instance concurrently, and at least one of the threads modifies the list structurally, it must be synchronized externally. (A structural modification is any operation that adds or deletes one or more elements, or explicitly resizes the backing array; merely setting the value of an element is not a structural modification.) This is typically accomplished by synchronizing on some object that naturally encapsulates the list. If no such object exists, the list should be "wrapped" using the Collections.synchronizedList method. This is best done at creation time, to prevent accidental unsynchronized access to the list:
List list = Collections.synchronizedList(new ArrayList(...));
Collections.synchronizedList(list)
nun schon genannt,
am besten aber eine eigene Klasse und die zwei drei benötigten Methoden synchronisieren,
etwas derart wichtiges würde ich persönlich nicht einer simplen Datenstruktur ohne gutes Logging der Methoden usw. überlassen