Teile eines String Array

Status
Nicht offen für weitere Antworten.

bernd

Bekanntes Mitglied
Code:
String[] jlinamenDaten = {};
    jlinamen.setBounds(5, 5, 150, 240);
    jlinamen.setSelectionMode(0);
    jlinamen.addListSelectionListener( new ListSelectionListener() {
      public void valueChanged( ListSelectionEvent e ) {

          try {
        BufferedReader in = new BufferedReader(new FileReader("Adressen\\dat1.txt"));  // ließt die Datei aus
         ArrayList list = new ArrayList();

         while ((zeile = in.readLine()) != null) {
          String[] teile = zeile.split(";");

         list.add("Name:" + " " + teile[0]);

               jlidata.setListData(list.toArray());

         }
         in.close();
       }
       catch (Exception d) {
         System.err.println("Fehler bei Datei "+d.toString());
         System.exit(1);
       }
      }
     } );
    getContentPane().add(jlinamen);

Ich möchte eine Textdatei auslesen,
deren Inhalt so aussieht!

z.B : Karl Mustermann;Musterstrasse;5;
Hugo Müller;Kölnerstrasse;10;
Peter Lustig;Javaallee;9;

Mit dem Code Splitte ich die Srings in Teile auf die ich dann zugreifen kann!
Wenn ich jetzt in der z.B. auf teile[0] zugreife werden mir alle Namen ausgegeben.
Ich würde aber gerne nicht alle sondern nur den Namen meiner Wahl ausgeben!
Wie kann man das am einfachsten hinkriegen? Ich kann die Textdatei auch anders aufbauen wenn das dann einfacher zu realisieren wäre!
:bahnhof:
 
dann müsstest du eine Map struktur nehmen... z.b. HashMap.
die basieren auf dem Key -> Value prinzip. d.h. ein Key hat einen Value. du könntest den Namen als Key speichern und die restinformation als value...

dann kannst du per map.get(name) den speziellen menschen ansprechen
 
Ich dachte eigentlich dass ich die einzelnen Strings wie einen zusammenhängenden Datensatz
unterscheiden könnte!
Aber das geht wohl nicht!
 
Ich würde die Datei einlesen und daraus einen Vector von Employee-Objekten erstellen, dann kannst du ganz einfach mit:
Code:
((Employee)myVector.get(0)).getFirstName();
auf die einzelnen Mitarbeiter zugreifen.
 
mhm - ich weiß nicht recht ob ich überhaupt dein problem richtig verstanden habe...

was willst du genau machen ?
 
deathbyaclown hat gesagt.:
mhm - ich weiß nicht recht ob ich überhaupt dein problem richtig verstanden habe...

was willst du genau machen ?

Ich denke du hast mich schon richtig verstanden!
Also ich hab eine Textdatei in der ich Adressen in der Form wie oben beschrieben abgespeichert habe.
(soll ein Adressbuch werden!)
Nun habe ich eine Jlist in der alle Vor und Zunamen aus der Textdatei angezeigt werden,
das hab ich auch soweit hinbekommen.
Nun möchte ich, einen Namen aus der Jlist anklicken und in einer anderen Jlist sollen dann
die dazugehörenden Daten wie Adresse Telefon usw. ausgegeben werden!

Das mit der HashMap hört sich schon ganz gut an, weiss aber nicht wie ich das umsetzen soll! ???:L
 
ok, dann reden wir vom selben 🙂

zuerst würde ich ein eigene Klasse schreiben die dir die Infos speichert (Name, Adresse usw). dann würde ich in eine HashMap den Namen als key und das Objekt als Value einfügen.+

In der einen Liste zeigst du dann alle Namen an und wenn einer selektiert wurde holst du aus der Map das dazugehörige Objekt....
 
Ganz genau das will ich machen,
aber im Moment habe ich das Problem, wenn ich auf einen Namen klicke werden mir alle Namen aus der Textdatei angezeigt und nicht nur ein bestimmter.
Ich denke so wie ich das jetzt angefangen habe wird das wohl auch nix werden!
:lol:
 
wie bisher (fast)
zeilenweise auslesen... splitten und ein neues Objekt erstellen mit den infos...
dann den namen als key und das objekt als value speichern
 
Klasse, funktioniert! Danke für die Hilfe! 🙂

Code:
String[] jlinamenDaten = {};
    jlinamen.setBounds(5, 5, 150, 240);
    jlinamen.setSelectionMode(0);
    jlinamen.addListSelectionListener( new ListSelectionListener() {
      public void valueChanged( ListSelectionEvent e ) {
          try {
        BufferedReader in = new BufferedReader(new FileReader("Adressen\\dat1.txt"));  // ließt die Datei aus
         ArrayList list = new ArrayList();

         while ((zeile = in.readLine()) != null) {
          String[] teile = zeile.split(";");

            HashMap data = new HashMap();
            data.put((teile[0]),new String (teile[1]));
             if ((String)data.get(jlinamen.getSelectedValue()) != null){
              jlidata.setListData(teile);
             }
         }
         in.close();
       }
       catch (Exception d) {
         System.err.println("Fehler bei Datei "+d.toString());
         System.exit(1);
       }

      }
     } );
 
Wie sieht es aus wenn man nun aber Einträge löschen will?
Mit remove werden die Eintäge ja nicht aus der Textdatei gelöscht oder?
 
nein nur aus der map...
die musst du dann wieder in die datei schreiben
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben