# ArrayList speichern



## animo (1. Mai 2012)

Hi! bin ganz neu hier und natürlich auch Java-Anfänger. Und wie alle Anfänger benötige ich Hilfe!
Also,
cch habe eine Datei erstellt mit solchen Einträgen:
“Monika Mustermann,1999,Hauptstr.,12a,70000,Stuttgart“
"Iegor Tarasov,1988,Landhausstr.,14,70190,Stuttgart"
"Iuliia Gorshkova,1985,Bebelstr.,65,70183,Hannover"

und ich speichere diese in arraylist,aber wenn ich versuche arraylist auszugeben,da kommt der letzte eintrag 3 mal.
Sagt mir bitte was ich nicht sehe bzw. falsch mache!
Danke im Voraus!




```
public class Loesung_ser_1 {

	/**
	 * @param args
	 * @throws IOException
	 */
	public static void main(String[] args) {
		ArrayList<Person> arr = new ArrayList<Person>();

		try {
			FileReader fr = new FileReader("C:\\Users\\Iegor\\Desktop\\info.txt");
			BufferedReader br = new BufferedReader(fr);
			String zeile;

			while ((zeile = br.readLine()) != null) {
				String[] result = zeile.split(",");
				Person p = new Person(result[0], Integer.parseInt(result[1]),
						result[2], result[3], result[4], result[5]);
				arr.add(p);
			}
			
			for (int i = 0; i < arr.size(); i++) {
				System.out.println(arr.get(i));
			}  
			
			br.close();
			fr.close();
	
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (NumberFormatException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}
```


----------



## XHelp (1. Mai 2012)

Ich kauf ein 
	
	
	
	





```
A
```
 und möchte lösen: Bockwurst


----------



## animo (1. Mai 2012)

sorry


----------



## GUI-Programmer (1. Mai 2012)

XStream - wortkarg


----------



## Gast2 (1. Mai 2012)

Attribute in Person statisch?


----------



## XHelp (1. Mai 2012)

Sicher, dass die Datei genau so aussieht?


----------



## animo (1. Mai 2012)

ja,die Atributen sind  statisch


----------



## Gast2 (1. Mai 2012)

Dann erklärt das doch dein Problem


----------



## animo (1. Mai 2012)

ich habe doch gesagt,dass ich einfach den Elefanten nicht sehe!
Danke für die schnelle Hilfe!:toll:


----------



## GUI-Programmer (1. Mai 2012)

Auch wenn das Thema bereits als "erledigt" makiert wurde - ich hatte gerade Lust ein Testprogramm zu schreiben, dass eine ArrayList per .txt Datei abspeichert und ausliest und das selbe noch mit XStream macht:

```
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.List;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;

public class ArrayListTest {
	
	public static void main(String[] args) throws Exception {
		System.out.println("-----------------------------");
		System.out.println("Create and save list via .txt");
		System.out.println("-----------------------------");
		createAndSaveListViaTxt();
		
		System.out.println();
		System.out.println("-----------------------------");
		System.out.println("Create and save list via XStream");
		System.out.println("-----------------------------");
		createAndSaveListViaXStream();
	}
	
	private static void createAndSaveListViaTxt() throws Exception {
		// Erstellen der Personenliste
		List<Person> personenliste = new ArrayList<Person>();
		personenliste.add(new Person("Monika Mustermann", 1999, "Hauptstr.", "12a", 70000, "Stuttgart"));
		personenliste.add(new Person("Iegor Tarasov", 1988, "Landhausstr.", "14", 70190, "Stuttgart"));
		personenliste.add(new Person("Iuliia Gorshkova", 1985, "Bebelstr.", "65", 70183, "Hannover"));
		
		// Testausgabe 1
		System.out.println("Erstellte Personenliste:");
		for(Person person: personenliste) {
			System.out.println(person);
		}
		System.out.println();
		
		// Zusammenfassen der Personenliste
		StringBuilder builder = new StringBuilder();
		for(Person person: personenliste) {
			builder.append(person.toString());
			builder.append(System.getProperty("line.separator"));
		}
		builder.delete(builder.length()-System.getProperty("line.separator").length(), builder.length());
		
		// Speichern der Personenliste in eine .txt-Datei
		File file = new File(System.getProperty("user.home")+"/Personenliste.txt");
		file.createNewFile();
		FileWriter fw = new FileWriter(file);
		fw.write(builder.toString());
		fw.flush();
		fw.close();
		
		// Leeren der Personenliste
		personenliste.removeAll(personenliste);
		
		// Auslesen der Datei
		BufferedReader bw = new BufferedReader(new FileReader(file));
		String line = null;
		List<String> linelist = new ArrayList<String>();
		while((line = bw.readLine()) != null) {
			linelist.add(line);
		}
		bw.close();
		
		// Umwandeln zu einzelnen Strings
		String[][] contents = new String[linelist.size()][6];
		for(int i=0; i<linelist.size(); i++) {
			contents[i] = linelist.get(i).replaceAll("\"", "").split(",");
		}
		
		// Einfügen in die Pesonenliste
		for(String[] content: contents) {
			personenliste.add(new Person(content[0], Integer.parseInt(content[1]), content[2], content[3], Integer.parseInt(content[4]), content[5]));
		}
		
		// Testausgabe 2
		System.out.println("Ausgelesene Personenliste:");
		for(Person person: personenliste) {
			System.out.println(person);
		}
	}
	
	private static void createAndSaveListViaXStream() throws Exception {
		// Erstellen der Personenliste
		List<Person> personenliste = new ArrayList<Person>();
		personenliste.add(new Person("Monika Mustermann", 1999, "Hauptstr.", "12a", 70000, "Stuttgart"));
		personenliste.add(new Person("Iegor Tarasov", 1988, "Landhausstr.", "14", 70190, "Stuttgart"));
		personenliste.add(new Person("Iuliia Gorshkova", 1985, "Bebelstr.", "65", 70183, "Hannover"));
		
		// Testausgabe 1
		System.out.println("Erstellte Personenliste:");
		for(Person person: personenliste) {
			System.out.println(person);
		}
		System.out.println();
		
		// Speichern der Personenliste in ein .xml Datei via XStream
		File file = new File(System.getProperty("user.home")+"/Personenliste.xml");
		file.createNewFile();
		XStream xstream = new XStream(new DomDriver());
		xstream.toXML(personenliste, new FileOutputStream(file));
		
		// Leeren der Personenliste
		personenliste.removeAll(personenliste);
		
		// Befüllen der Personenliste mit den Dateiinhalten via XStream
		personenliste = (List<Person>) xstream.fromXML(file);
		
		// Testausgabe 2
		System.out.println("Ausgelesene Personenliste:");
		for(Person person: personenliste) {
			System.out.println(person);
		}
	}

}
```


```
public class Person {
	private String name;
	private int yearOfBirth;
	private String street;
	private String streetNumber;
	private int plz;
	private String residence;
	
	public Person(String name, int yearOfBirth, String street,
			String streetNumber, int plz, String residence) {
		this.name = name;
		this.yearOfBirth = yearOfBirth;
		this.street = street;
		this.streetNumber = streetNumber;
		this.plz = plz;
		this.residence = residence;
	}
	
	public String getName() {
		return name;
	}
	
	public void setName(String name) {
		this.name = name;
	}
	
	public int getYearOfBirth() {
		return yearOfBirth;
	}
	
	public void setYearOfBirth(int yearOfBirth) {
		this.yearOfBirth = yearOfBirth;
	}
	
	public String getStreet() {
		return street;
	}
	
	public void setStreet(String street) {
		this.street = street;
	}
	
	public String getStreetNumber() {
		return streetNumber;
	}
	
	public void setStreetNumber(String streetNumber) {
		this.streetNumber = streetNumber;
	}
	
	public int getPlz() {
		return plz;
	}
	
	public void setPlz(int plz) {
		this.plz = plz;
	}
	
	public String getResidence() {
		return residence;
	}
	
	public void setResidence(String residence) {
		this.residence = residence;
	}

	@Override
	public String toString() {
		return "\"" + name + "," + yearOfBirth + "," + street
				+ "," + streetNumber + "," + plz + "," + residence + "\"";
	}
}
```


----------



## animo (1. Mai 2012)

mit XStream ist es viel effizienter! geiles ding!


----------



## GUI-Programmer (1. Mai 2012)

Vor allem kannst du mit XStream alle möglichen Objekte abspeichern und wieder erzeugen!


----------

