Problem Arraylist durchlaufen

  • Themenstarter Themenstarter Java_Arraylist
  • Beginndatum Beginndatum
J

Java_Arraylist

Gast
Hallo,

ich versuche ein File, das in einer Zeile 17 Wörter, die durch leerzeichen oder Komma getrennt sind ,einzulesen.
Die Wörter speichere ich zuvor in einem Array und dieses Array füge ich dann in eine Arraylist ein. In dieser Arraylist sind dann so viele Arrays wie ich Zeilen in meinem File habe.

Die Arraylist möchte ich dann durchlaufen und jedes Array ausgeben (bzw. wird jedes Array in der Datenbank gespeichert). Mein Problem: es wird immer das selbe Array mit den Werten ausgegeben bzw. in der DB gespeichert.

D.h. Wenn ich 99 Zeilen habe, hätte ich in meiner Arraylist 99 Arrays. Wenn ich die Arraylist mit einer for each Schleife durchlaufe, wird aber immer nur das 99. Array ausgegeben und dass 99 mal. (immer das letzte Array mit der letzten Zeile im file)

Hier der Code....sieht vielleicht jemand den Fehler? Ich komme leider nicht weiter.

Java:
StreamReader reader = new StreamReader(path);

int columnCounter =0;
String[] stdArray = new String[18];
ArrayList list = new Arraylist();
                
                while(reader.Peek() > -1)
                {
                    //reads the lines line by line
                    line = reader.ReadLine();
                    String [] words = line.Split(delimiterChars, StringSplitOptions.RemoveEmptyEntries);
                    
                    foreach (String s in words)
                    {
                        if (columnCounter < stdArray.Length)
                        {
                            stdArray[columnCounter] = s;
                            columnCounter++;
                        }
                    }
                    stdArray[columnCounter] = "hours";

                    //StreamReader reads the next line
                    //therefore the columnCounter starts again at the beginning
                    columnCounter = 0;

                    //adds the Array to the list
                    list.Add(stdArray);
                    
                }//end while

//Ausgabe der Arraylist
foreach (String [] array in list) {
   Console.Writeln(array[0]);
   ......
    Console.Writeln(array[17]);
}
 
danke für deine schnelle Rückmeldung;

leider verstehe ich das jetzt nicht ganz; wie meinst du das mit neuem Array erzeugen in der for Schleife?
Könntest du mir ein Beispiel dafür geben.

danke
 
@Müder Joe: habe vergessen das umzuschreiben....habe das Programm zuerst in C# geschrieben
 
>leider verstehe ich das jetzt nicht ganz;

Du erstellst ein neues Array. (sagen wird mal newArray)
Dan füllst du das Array das erste Mal mit 1,2,3,
Dann addest du dieses Array der ArrayList (newArray mit 1,2,3)

nächste Runde:
Du füllst das Array (newArray mit 4,5,6)
--> das Array ist auch in der ArrayListe, diese andert sich auch
Addedst es
--> nun ist 2 mal das gleiche Array in der List. (2 mal die Referenz auf das gleiche Objekt)

EDIT:
Sagen wir mal von C her.
du hast dan 2 mal den gleichen Pointer (newArray) in der ArrayListe.
Wenn du das veränderst, worauf der Pointer zeigt, dann verändert sich der Inhalt aller Pointer die darauf zeigen (die Referenz in Java ist eben das Array, welches x mal in die List geadded wird und x mal verändert wird)
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben