Arraylist in Datei speichern

sambla0306

Mitglied
Hallo,
ich habe folgendes Problem.
Ich habe eine ArrayList 'al' erstellt die einige Kundennamen beinhaltet.
Diese Arraylist soll jetzt in eine Liste exportiert werden.
Das könnte ich mir gut als *.txt oder *.csv Datei vorstellen.
Ich glaube txt wäre mir am liebsten.

Man soll dann später wenn man die txt öffnet sowas lesen wie:

Kunde1
Kunde2
Kunde3
Kunde4

Der bisherige Code sieht so aus:

Code:
if (source == gui.txtExport) {
            
        ArrayList al = new ArrayList(); 
        for(int i = 0; i <kundenAnzahl; i++){
            
        al.add(kunden[i].name + "\n");        
               
    }
    System.out.println(al);  
}

txtExport ist ein Button im Menü oben im Anzeigefenster.
Das System.out.println(al); habe ich nur um die ArrayList zu testen.

Bisher wird es auch noch etwa so angezeigt:
[ max mustermann
, peter mustermann
]
kann man die Klammern und Kommata entfernen?

ist aber nebensache. Vorallem der Export ist wichtig.

Danke!
 
kunden ist nehme ich mal an ein Kunden-Objekt. Überschreibe die toString Methode so, dass sie genau das darstellt, was du lesen willst. Dann musst du nur noch auf dem Kunden .toString aufrufen und das abspeichern.
 
kunden ist jeweils ein Kunde ja.
ich verstehe leider nicht ganz wie du das meinst mit der toString Methode.
Kannst du das nochmal für einen blutigen Anfänger erklären?:autsch:
 
z.B so


Java:
@Override
public String toString(){
  return String.valueOf(kunde.getName() + kunde.getAddresse() + kunde.getTel() + LINE_SEPERATOR);
}

das rufst du dann für jeden Kunden in deiner List über eine for/each Schleife auf, und schreibst es in deine Datei.

Java:
for(Kunde kunde : kundenListe){
  
  writer.write(kunde.toString);
}

Code:
writer
ist in diesem Fall der mit dem FileWriter verknüpfte BufferedWriter der die Daten in deine Datei Schreiben soll.

Code:
LINE_SEPERATOR
ist in dem fall die Konstante für
Code:
System.getProperty("line.Separator")
;

Code:
kunde
steht für die aktuelle Instanz deiner Klasse ( in deiner Liste )

Das ganze könnte dann in deiner Datei so aussehen

Java:
Max Mustermann Musterstr.25 05445/122526
Peter Lustig Lustigtal.45 01125/4458514

selbstverständlich könnte man die einzelnen bestandteile auch trennen, z.B mit
Code:
";"
wie in einer CSV.datei
 
Zuletzt bearbeitet:
Okay vielen Dank.

Und wenn man davon mal absieht:
Mein Ziel ist es IRGENDWIE diese Liste der Kunden zu sehen.
Egal ob über ein popup fenster, eine Liste oder halt ein txt datei.
Wie kann ich das in meinem konkreten Fall anstellen?
 
ScrollPane + JTable in Verbindung mit einem JFrame z.B

oder einfach eine JTextArea in die du dann die eingelesenen Kunden die du zuvor in der Datei gespeichert hast ausgibst, allerdings kannst du dir dann auch das speichern in der Datei sparen insofern du damit nicht weiter arbeiten möchtest

Stichwort ist hier SWING / JavaFX
 
Zuletzt bearbeitet:
Nein, möchte ich nicht.
Ich brauche echt nur irgendetwas tabellenartiges was die Kunden als Liste ausgibt.
Bin schon lange am probieren. Aber ohne das nötige Know-how scheinbar nahezu unlösbar.

Kann ich nicht irgendwie in dem ActionListener des button den ich gerade als Code schon gepostet habe schreiben, dass sich ein popup fenster öffnet NUR mit dem Text , bzw. der Tabelle als Inhalt?

Ich bin mit meinem Latein am Ende ;(
 
Ein Frame mit einer JTextArea ist quasi genau das 😉

alternativ ginge mit Sicherheit auch ein selbst zusammengebauter Dialog, andernfalls musst du halt den weg wählen und dir die Textdatei öffnen lassen, oder selber öffnen.

einfach mal eben so ist halt nicht immer machbar 😉
 
Einfachste Variante wäre sowas:

Java:
String names = "";
for(int i = 0; i < kundenAnzahl; i++)
{
	names += kunden[i].name + "<br/>";
}
JOptionPane.showMessageDialog(null, "<html>"+names+"</html>");

Ist natürlich bei einer langen Liste an Namen eher unvorteilhaft. Dann müsste man darüber nachdenken mit JScrollPane / JLabel etc zu arbeiten.

EDIT:

Das ginge bei einer längeren Liste:
Java:
//Irgendwo in der Klasse
final JLabel label = new JLabel();
final JScrollPane scrollPane = new JScrollPane(label);
scrollPane.setPreferredSize(new Dimension(100, 100));


//Im actionListener
String names = "";
for(int i = 0; i < kundenAnzahl; i++)
{
	names += kunden[i].name + "<br/>";
}
label.setText("<html>"+names+"</html>");

JOptionPane.showMessageDialog(null, scrollPane);
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben