Aus Datei auslesen und untersuchen ob diese Zeile schon vorhanden ist

momo_1

Neues Mitglied
Hi, ich bin noch neu im Java-Programmieren. Ich wollte ein Programm schreiben, welches aus einer .txt Datei Zeilen ausliest, diese in einer ArrayList speichert und alle weiteren einliest und überprüft ob diese schon irgendwo vorhanden sind. Falls nicht, sollen diese an die Liste anfügt werden.
Mein Problem ist, bei großen Dateien dauert das aber sehr lange. Es wird ja immer die komplette Liste überprüft. Kann ich das irgendwie schneller gestalten? Ich bin bisher einfach auf keine Lösung gekommen, da ich ja nicht drum rum komme immer die schon eingelesenen Zeilen für jede Zeile neu zu überprüfen.

Java:
if (!file.canRead() || !file.isFile())
                System.exit(0);

                in = null;
            try {
                in = new BufferedReader(new FileReader(datName));
                String row= null;
           
                System.out.println("");
                System.out.println("");
                System.out.println(dateiName + " wird gelesen.");
           
           
                while ((row = in.readLine()) != null) {           // Dateizeilen einlesen
                    int counter = 0;
                    if (0 == results.size()) {                   // Falls noch keine Zeile eingelesen wurde wird die erste ohne Überprüfung eingefügt
                        results.add(row);
                    }
                    else {
                        for (int i = 0;i<results.size();i++){   // Falls diese Zeile schon einmal irgendwo vorhanden ist wird die nächste Zeile eingelesen
                            if (row.equals(results.get(i))) {
                                counter++;
                            }
                        }
                        if (counter == 0){                       // Falls noch nicht vorhanden wird die Zeile zu der Liste hinzugefügt
                            results.add(row);
                        }
                    }
                }
           
                FileWriter fw = new FileWriter(endName);       // Nachdem die Datei abgearbeitet ist wird eine neue Datei erzeugt in die der Inhalt der Liste eingefügt wird
                BufferedWriter bw = new BufferedWriter(fw);
           
                for (int i = 0;i<results.size();i++){
                    bw.write(results.get(i));
                    bw.newLine();
                }
           
                bw.close();
               
                System.out.println("");
                System.out.println("");
                System.out.println(endName + " wurde erzeugt.");
           
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (in != null)
                    try {
                        in.close();
                    } catch (IOException e) {
                    }
           
            }
 
@tommysenf funktioniert das so? dass ich die List auch ohne eine Schleife durchsuchen kann?
@DrZoidberg okay 😉 Da war ich noch nicht in meinem Buch. Lese das Buch "Grundkurs Programmieren in Java". War eigentlich auch noch nicht bei den ArrayLists, aber von denen hatte ich schon mal was gelesen, deshalb hab ich das bisher so gelöst 🙂 Aber werd ich mir mal durchlesen.
Danke
 

Zurück
Oben