Zeilen des ListArray nach einem Wort durchsuchen und diese Zeile ausgeben

Toxicspeed

Neues Mitglied
Hallo zusammen,

ich benötige eure Hilfe da ich nicht weis wie ichs angehen soll.
Ich habe folgenden Code:
Java:
static ArrayList<String> liste = new ArrayList<String>();

Java:
    public static void readFile(String filename) throws IOException {
        BufferedReader br = new BufferedReader(new FileReader(filename+".txt"));
        String line = null;
        while ((line = br.readLine()) != null) {
            liste.add(line);
        }
       
        for(String output : liste)
        {
            System.out.println(output);
        }
    }

Damit lese ich aus einer .txt Datei die einzelnen Zeilen aus und speicher sie in einer ArrayList<>.
Wenn ich es dann in der for-Schleife ausgebe passt soweit alles. Die Ausgabe sieht genauso aus wie der Inhalt der Datei.
Java:
150120,Franz,Müller
150111,Peter,Brand
140554,Sabine,Freund
150130,Emil,Sousa

Ich möchte jetzt die einzelnen Zeilen nach der Zahl absuchen, also z.B. 150120, und wenn dies in einer Zeile der ArrayList gefunden wird möchte ich diese Zeile zerlegen und die 3 Elemente des String je in einer Variable(nummer, vorname, nachname) speichern.

Ich hab nun aber keine wirkliche Idee wie ich dies angehen kann. Ich hab schon versucht "output" zu splitten. Dabei bekomm ich aber nur eine Adressierung von Java zurück.

Könnt ihr mir da bitte helfen?

Grüße
Edi
 

bennemann8

Mitglied
Du könntest einen StringTokenizer verwenden, um deine Zeilen bei den Kommata zu trennen. Das könnte dann so aussehen:
Java:
    public static void readFile(String filename) throws IOException {
        BufferedReader br = new BufferedReader(new FileReader(filename + ".txt"));
        ArrayList<String> liste = new ArrayList<>();
        String line = null;
        int i = 0;
        while ((line = br.readLine()) != null) {
            liste.add(line);                                    // fügt line zur Liste hinzu
            StringTokenizer st = new StringTokenizer(line, ",");// teilt line zwischen den Kommata (bei dir 3 Elemente)
            while (st.hasMoreElements()) {
                switch (i) {
                    case 0:
                        //Nummer in Variable speichern
                        i++;
                        break;
                    case 1:
                        //Vorname in Variable speichern
                        i++;
                        break;
                    case 2:
                        //Nachname in Variable speichern
                        i = 0;
                        break;
                    default:
                        break;
                }

            }
        }

        for (String output : liste) {
            System.out.println(output);
        }
    }

Je nachdem was du machen möchtest, kannst du auch deine Liste ersetzen bzw. streichen.
Du könntest eine Klasse "Person" anlegen, die die attribute (int nummer, String vorname, String nachname) besitzt, mit den jeweiligen Gettern/Settern bekommst du dann jeweils deine Attribute aus der Klasse.
Dann könntest du deine ArrayList<String> durch ArrayList<Person> ersetzen und damit weiterarbeiten ;)
 
K

kneitzel

Gast
Kannst Du evtl. einmal genau schreiben, was Du versucht hast. Die Aussage, dass Du nur eine Addressierung bekommst lässt mich vermuten, dass Du den String gesplittet hast in ein String-Array und dann dieses Array einfach mit System.out.println ausgegeben hast. Das ist aber nur eine Vermutung, da Du uns wichtige Details einfach nicht mitgeteilt hast.

Wenn dem so ist: Gib doch einfach das erste Element aus dem Array aus - oder überleg Dir, wie Du das ganze Array ausgeben könntest, denn das scheint ggf. nur Dein Problem zu sein.
 

Hans_G

Mitglied
Ich finde, die Aufgabenstellung ist ein perfekt zum Einsatz von Java 8:

Zunächst würde ich eine Klasse Person definieren:
Java:
    class Person {
        final int id;
        final String vorname;
        final String nachname;
        public Person(int id, String vorname, String nachname) {
            this.id = id;
            this.vorname = vorname;
            this.nachname = nachname;
        }
        public String toString() {
            return nachname + ", " + vorname + "ID: " + id;
        }

Die Methode zum Auffinden einer Person anhand seiner ID sähe dann so aus:
Java:
    public static Optional<Person> findePerson(int id, Path file) throws IOException {
        try(Stream<String> lines = Files.lines(file, Charset.defaultCharset())) {
            Optional<String> foundLine = lines
                    .filter(l -> l.startsWith(String.valueOf(id)))
                    .findAny();
            return foundLine.map(l -> {
                String[] tokens = l.split(",");
                return new Person(Integer.parseInt(tokens[0]), tokens[1], tokens[2]);
            });
        }
    }

Die Textdatei wird per Stream Zeile für Zeile abgearbeitet. Da der Eintrag mit der ID beginnt, reicht es mit Hilfe von startsWith() zu filtern. Ich gehe davon aus, dass es nur einen Eintrag zu einer ID gibt und verkürze die Suche daher mit findAny(). findAny() gibt ein Optional zurück, da ja die Möglichkeit besteht, dass kein Eintrag zu der gesuchten ID besteht.
Mit map() konstruiere ich aus dem Optional<String> ein Optional<Person>. Dafür unterteile ich den String mit split() an den Kommata.
 

Toxicspeed

Neues Mitglied
Hallo zusammen,

also ich bin jetzt doch noch auf ne Lösung gekommen. Ich hab keine Ahnung ob das so ok ist aber sie tut was sie soll.
Java:
    public static String[] readFile(String filename, String search) throws IOException {    //Datei lesen und nach Nummer durchsuchen
        BufferedReader br = new BufferedReader(new FileReader(filename+".txt"));
        String line = null;
        while ((line = br.readLine()) != null) {
            liste.add(line);
        }
        for(int i = 0; i < liste.size(); i++) {                                                //Liste durchlaufen
            String[] stringLine = liste.get(i).split(";");                                    //jede Zeile an ; aufsplitten
            String searchLine = stringLine[0];                                                //Erste Position im Array auslesen, ist immer die ID
            if (searchLine.equals(search)) {                                                //Vergleiche mit übergebenem Suchstring
                br.close();                                                                    //Schließe den BufferedReader
                return stringLine;                                                            //Gib den STringArray der richtigen Zeile zurück und beende die Suche
            }
        }
        br.close();
        return null;
    }

Danke auch für die Anregungen von euch.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Leere Zeilen in Textdatei löschen lassen Java Basics - Anfänger-Themen 5
Saiko Zeilen einer Datei einlesen Java Basics - Anfänger-Themen 3
districon 2D Array - Zeilen und Spalten durchsuchen Java Basics - Anfänger-Themen 3
dieter000 Kurze Frage kann mir ejmand kurz diesen Code erklären, bzw wie man die zeilen erklärt und so Java Basics - Anfänger-Themen 1
s_1895 zu viele Zeilen in der Main Methode Java Basics - Anfänger-Themen 4
W Anzahl der Zeilen ausgeben lassen Java Basics - Anfänger-Themen 20
crrnogorka Letzte Zeile einer Tabelle "überschreibt" alle anderen Zeilen Java Basics - Anfänger-Themen 1
X Textdatei: zwei-zeilenweise gleiche Zeilen rausschmeißen Java Basics - Anfänger-Themen 21
A Jede x-te Zeile, lösche 10 Zeilen Java Basics - Anfänger-Themen 9
das_leon Alle Zeilen einer CSV-Datei auslesen Java Basics - Anfänger-Themen 1
C Zeilen aus einer Datei in Array speichern Java Basics - Anfänger-Themen 4
F Mehrere Zeilen zu einer Zeile zusammenfügen und in eine Datei schreiben Java Basics - Anfänger-Themen 1
A String mit mehreren Zeilen splitten Java Basics - Anfänger-Themen 4
S Java Text splitten mit Tabs, Zeilen, Zeichen und Klammern. Java Basics - Anfänger-Themen 6
D JTable Zeilen löschen Java Basics - Anfänger-Themen 5
H Best Practice JavaFX TableView mit Zell-Rahmen anstelle von Zeilen-Balken Java Basics - Anfänger-Themen 1
V Ergebnisse in 2 Zeilen Java Basics - Anfänger-Themen 4
R Eine Datei mit mehreren Zeilen beschreiben Java Basics - Anfänger-Themen 5
C Zeilen in Array einlesen und splitten? Java Basics - Anfänger-Themen 17
T Exceptions - ausgeführte Zeilen Java Basics - Anfänger-Themen 4
M Input/Output Alle Zeilen auslesen und in Variable speichern Java Basics - Anfänger-Themen 5
X wie kann ich in bluej/java einene 2d array mit zahlen fuellen, so dass sich diese in der der zeilen Java Basics - Anfänger-Themen 2
J Zeilen aus einer .txt-Datei auslesen und Variablen zuweisen Java Basics - Anfänger-Themen 11
F Problem mit Tabulatoren bei Zeilen zählen einer Textdatei Java Basics - Anfänger-Themen 17
F Textdatei einlesen und Zeilen zählen Java Basics - Anfänger-Themen 10
M Array: Zeilen vergleichen Java Basics - Anfänger-Themen 4
J Klassen Hilfe bei unbekannten Zeilen bzgl. Klassen / Komponenten Java Basics - Anfänger-Themen 12
T JTable einzelne Zeilen löschen Java Basics - Anfänger-Themen 3
K Input/Output 6000 Zeilen einlesen und String-Array vergleichen? Java Basics - Anfänger-Themen 1
L String extrahieren mit Regular Expression über mehrere Zeilen hinweg Java Basics - Anfänger-Themen 1
T CSV auf Inhalt und Zeilen überprüfen Java Basics - Anfänger-Themen 2
I Datei mit 2 Spalten und millionen Zeilen Java Basics - Anfänger-Themen 19
kaoZ Input/Output Einlesen von mehreren Zeilen Java Basics - Anfänger-Themen 4
J Zeilen unsichtbar Java Basics - Anfänger-Themen 11
3 JLabel - Text in mehreren Zeilen zentrieren Java Basics - Anfänger-Themen 5
L Split + Zeilen einer Datei mit bestimmtem Inhalt löschen Java Basics - Anfänger-Themen 23
V Methoden Zeilen nach bestimmtem Attribut sortieren Java Basics - Anfänger-Themen 4
M Einzelne Zeilen nach Zeichen auslesen Java Basics - Anfänger-Themen 4
T Methoden HILFE! readLine() liest nur ungerade Zeilen?? Java Basics - Anfänger-Themen 2
G JTextArea: nur bestimmte Zeilen anders formatieren Java Basics - Anfänger-Themen 7
B Input/Output bestimmte Zeilen in .txt Dateinen überschreiben Java Basics - Anfänger-Themen 20
G 3422 Zeilen in Eclipse Console Java Basics - Anfänger-Themen 5
L Zeilen und Spalten sortieren Java Basics - Anfänger-Themen 11
K Erste Schritte Eingabetext besteht aus mehreren Zeilen? Java Basics - Anfänger-Themen 3
T BufferedReader mehrere Zeilen einlesen Java Basics - Anfänger-Themen 4
B Zählen bestimmter Zeilen einer .txt Java Basics - Anfänger-Themen 7
N Zeilen vergleichen Java Basics - Anfänger-Themen 7
N Datei mit max 2000 Zeilen schreiben Java Basics - Anfänger-Themen 9
D Input/Output Zeilen aus txt-datei in Java-Liste einfügen Java Basics - Anfänger-Themen 9
K BufferedWriter schreibt die letzten paar Zeilen nicht Java Basics - Anfänger-Themen 5
R Erste Schritte 2D-Array: Zeilen & Spalten ohne schleife übergeben? Java Basics - Anfänger-Themen 3
C Mehrere Zeilen unter ~.showMessageDialog Java Basics - Anfänger-Themen 12
K Java Split mehrere Zeilen Java Basics - Anfänger-Themen 4
H 200000 Zeilen aus Datei einlesen Java Basics - Anfänger-Themen 13
Q LogFile.log einlesen und Werte zwischen 5 zeilen vergleichen Java Basics - Anfänger-Themen 5
P Bestimmte Zeilen einer Datei ermitteln ? Java Basics - Anfänger-Themen 30
B JList und JTable: leere Zeilen bei listfiles(); Java Basics - Anfänger-Themen 5
M Zeilen aus String exportieren Java Basics - Anfänger-Themen 5
P Unterschied dieser 2 code Zeilen Java Basics - Anfänger-Themen 12
A Anzahl Zeilen eines Arrays bestimmen Java Basics - Anfänger-Themen 10
J Zeilen eines Arrays vergleichen Java Basics - Anfänger-Themen 2
S .txt einlesen->Zeilen ersetzen->neu.txt speichern Java Basics - Anfänger-Themen 13
R String über mehrere Zeilen Java Basics - Anfänger-Themen 15
M Verständnis einiger Zeilen Java Basics - Anfänger-Themen 4
E Array mit Zahlen von 1-(Zeilen*Spalten) befüllen Java Basics - Anfänger-Themen 8
S Zeilen zählen Java Basics - Anfänger-Themen 7
Ollek Bestimmte Zeilen aus einer HTML Datei lesen Java Basics - Anfänger-Themen 8
C Zeilen aus einer Datei auslesen Java Basics - Anfänger-Themen 4
H String/StringBuffer nach zeilen aufteilen Java Basics - Anfänger-Themen 2
K Wie kann ich alle Zeilen in eineR Datenbank zählen? Java Basics - Anfänger-Themen 13
JFeel-x Zeilen eines JEditorPanes Java Basics - Anfänger-Themen 2
0 CSV Import - Zeilen, Spalten Java Basics - Anfänger-Themen 15
O 2D Array - Zeilen-/Spaltenlänge ermitteln Java Basics - Anfänger-Themen 4
P String über mehrere Zeilen definieren Java Basics - Anfänger-Themen 3
G Datei zeilen anhängen Java Basics - Anfänger-Themen 3
A Scanner liest nur 999 Zeilen ein Java Basics - Anfänger-Themen 5
B Zeilen in Textdatei löschen Java Basics - Anfänger-Themen 2
D Datei einlesen, zeilen ignorieren, probleeem Java Basics - Anfänger-Themen 7
A Anzahl der Zeilen in Textdatei Java Basics - Anfänger-Themen 7
G Zeilen in Eclipse einblenden Java Basics - Anfänger-Themen 2
M Zeilen aus Textdatei in Array schreiben Java Basics - Anfänger-Themen 2
M Zeilen auslesen Java Basics - Anfänger-Themen 12
H Streams etc. erster Versuch Zeilen aus einer Datei zu lesen Java Basics - Anfänger-Themen 6
L In einer Tabelle Zeilen loeschen Java Basics - Anfänger-Themen 4
D Auf Zeilen eines zweidimensionalen Arrays zugreifen Java Basics - Anfänger-Themen 3
D txt nach Zeilen splitten. Java Basics - Anfänger-Themen 9
G Anzahl der Zeilen in einer Datei Java Basics - Anfänger-Themen 7
T die letzten X zeilen einer datei entfernen Java Basics - Anfänger-Themen 19
E was bedeuten @Zeilen Java Basics - Anfänger-Themen 4
T Einlesen von einzelnen Zeilen Java Basics - Anfänger-Themen 2
T null-Zeilen aus einem Array entfernen Java Basics - Anfänger-Themen 4
E Automatischer Zeilen-Umbruch bei JTextArea Java Basics - Anfänger-Themen 4
G zeilen aus text datei löschen Java Basics - Anfänger-Themen 6
G CSV auslesen und Zeilen in Array speichern Java Basics - Anfänger-Themen 13
ARadauer zeilen einer text datei ermitteln Java Basics - Anfänger-Themen 6
S Anzahl von zeilen einer Datei bestimmen. Java Basics - Anfänger-Themen 4
J Tabelle mit mehreren Zeilen dynamisch aufbauen Java Basics - Anfänger-Themen 2
F Zeilen und Spalten in JTable Selektieren Java Basics - Anfänger-Themen 2
S In einer CSV Datei leere Zeilen ignorieren Java Basics - Anfänger-Themen 6
W int aus Zeilen einer Textdatei Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben