Datentypen Typ der Arraylist in String umwandeln

A

Alexander

Gast
Hallo zusammen,

ich habe eine ArrayList vom typ <Person> in der verschiedene Objekte gespeichert sind. Z.b. ist dort eine Wohnaddresse einer Person vom typ String drin und eine Postleitzahl vom typ int. Ich habe mit Hilfe eines Comparators bestimmte Arten zum Vergleichen erstellt, zb. sortiere die ArrayList nach der Postleitzahl, Wohnort, bla bla bla :D
Bei der Ausgabe am Ende gebe ich die ganze ArrayList aus, die vom Typ Person ist, und das geht zwar mit System.out.printl, aber es kommen nur so verschlüsselte Wörter (is auch logisch, wenn man nur ArrayList ausgeben lässt ^^)
Ich möchte jetzt in meiner SortierMethode den Typ Person in einen String umwandeln, sprich so, dass ich bevor ich das eigentliche Sortieren beginne, die ArrayList in einen String umwandle und dieses umgewandelte in eine Textdatei ausgeben lasse (Das wären nämlich genau die PersonenDaten wie Postleitzahl usw. alles schön im Textfile).

gibt es da allgemein eine Möglichkeit?

also ich dachte da an zb .toString (geht bei mir aber nicht)

So hier ein wenig Code:

[Java]
public ArrayList<Person> myPerson = new ArrayList<Person>(); //meine ArrayList

public void sortModel(int spalte, ArrayList<Person> arrayList) { //hier noch vor Collections.sort soll die Umwandlung stattfinden
System.out.println("Hier methode sort");
Comparator<Person> comp = new PersonComparator(spalte);
System.out.println("Sortiert:");
Collections.sort(arrayList, comp);
System.out.println("---------");
for (Person p1 : myPerson) {
System.out.println(p1);
}
}
[/Java]
 
A

Alexander

Gast
Hmm wäre irgendwie aufwendig für jedes Teil was da drin ist n toString zu machen, weil da mehrere ints und Dates sind
was wäre denn alternativ zu einem toString in ArrayList noch sinnvoll?
 
G

Gastredner

Gast
Aufwendig? Was ist an sowas aufwendig?
Java:
String name, vorname, geburtsname
int alter
Date geburtsdatum
// ...
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
// ...
public String toString() {
    System.out.println("###############");
    System.out.println("Name: " + name + ", " + vorname + ((geburtsname != null) ? geburtsname : ""));
    System.out.println("Geburtsdatum: " + sdf.format(geburtsdatum));
    System.out.println("Alter: " + alter);
    // Und so weiter...
}
Ist meiner Meinung nach immer noch der beste Weg, da wiederverwendbarer. Alternativ müsstest du die Ausgabe halt dort formatieren, wo du jetzt die Personen ausgibst, also sowas z. B.:
Java:
for (Person p: myPerson) {
    System.out.println("Name: " + p.getName());
    // Und so weiter...
}
 
M

mg_666

Gast
Java:
...
//Methode in Person
public String toString()
{
      return MessageFormat.format("Person: {0} {1} {2} {3}", new Object[] { name, adresse, date.toString()});
}
...

Des hat mit Deiner ArrayList gar nichts zu tun. Hat eher was mit dem Personenobjekt zu tun.
 
A

Alexander

Gast
Aha, das ist jetzt eine fixe Eingabe,die immer so dort steht, wenn ich diese Methode aufrufe. Was bringt mir das, ich wollte geordnet ausgeben können, dadurch wird meine Flexibilität doch auf einen Fall beschränkt??
 
A

Alexander

Gast
Haste noch nie probiert eine ArrayList direkt ausgeben zu lassen mit System.out.printl();
Bei mir wäre das System.out.printl(myPerson);
und dann kommt wenn ich 4 personen mit eigenschaften ordne so etwas raus:

de.datamodel.Person@506411
de.datamodel.Person@1d99a4d
de.datamodel.Person@12152e6
de.datamodel.Person@c9ba38

Das ist die Verschlüsselung die ich gemeint habe^^
 

Schumi

Bekanntes Mitglied
Das liegt halt daran, dass Person keine toString() hat.

public String toString() {
System.out.println("###############");
System.out.println("Name: " + name + ", " + vorname + ((geburtsname != null) ? geburtsname : ""));
System.out.println("Geburtsdatum: " + sdf.format(geburtsdatum));
System.out.println("Alter: " + alter);
// Und so weiter...
}
Eine toString() sollte allerdings nichts ausgeben sondern einen String zurückliefern.
 
G

Gastredner

Gast
Eine toString() sollte allerdings nichts ausgeben sondern einen String zurückliefern.
Korrekt, nicht dran gedacht.
Also eher mit einem StringBuilder zusammensetzen statt mit println ausgeben und dann den entstehenden String zurückgeben.

Alexander hat gesagt.:
Aha, das ist jetzt eine fixe Eingabe,die immer so dort steht, wenn ich diese Methode aufrufe. Was bringt mir das, ich wollte geordnet ausgeben können, dadurch wird meine Flexibilität doch auf einen Fall beschränkt??
Die toString-Methode hat den Auftrag, dir eine gültige Stringrepräsentation des Objektes zurückzugeben - wenn du mehrere verschiedene benötigst, dann solltest entweder direkt vor Ort formatieren (wie im zweiten Beispiel), oder halt verschiedene Methoden in die Klasse Person einbauen, die dir die entsprechenden Repräsentationen zurückliefern.
 

ImmNek

Mitglied
Hi Alexander,

Poset doch mal die Klasse <Person>.

Ich würde die Methode eben einfach .print() nennen ;)

Ich verstehe nicht, wieso das unflexibel sein soll. Du kannst ja deine ArrayList immernoch genau so sortieren und Vergleiche anstellen wie vorher. Nur wenn du jetzt die Methode .print() aufrufst, werden die Daten einfach gedruckt.
 
A

Alexander

Gast
[Java]
package de.datamodel;

import java.util.ArrayList;
import java.util.Date;

/**
* Die Klasse Personen beinhaltet die Eigenschaften von "Person".
*/
public class Person {
/**
* Das ist der Name der Person.
*/
public String name;
/**
* Das ist der Vorname der Person.
*/
public String vorname;
/**
* Das ist das Geburtsdatum der Person.
*/
public Date geburtsdatum;
/**
* Das ist das Gehalt der Person.
*/
public int gehalt;
/**
* Das ist die Straße, in der die Person wohnt.
*/
public String strasse;
/**
* Das ist die Postleitzahl des Ortes, in der die Person wohnt.
*/
public int plz;
/**
* Das ist der Ort, an dem die Person wohnt.
*/
public String ort;

/**
* Diese Methode gibt den Namen der Person zurück.
*/
public String getName() {
return name;
}

/**
* Diese Methode setzt den Namen der Person auf den übergebenen Wert.
*/
public String setName(String name) {
this.name = name;
return this.name;
}

/**
* Diese Methode gibt den Vornamen der Person zurück.
*/
public String getVorname() {
return vorname;
}

/**
* Diese Methode setzt den Vornamen der Person auf den übergebenen Wert.
*/
public void setVorname(String vorname) {
this.vorname = vorname;
}

/**
* Diese Methode gibt das Geburtsdatum der Person zurück.
*/
public Date getGeburtsdatum() {
return geburtsdatum;
}

/**
* Diese Methode setzt das Geburtsdatum der Person auf den übergebenen Wert.
*/
public void setGeburtsdatum(Date geburtsdatum) {
this.geburtsdatum = geburtsdatum;
}

/**
* Diese Methode gibt das Gehalt der Person zurück.
*/
public int getGehalt() {
return gehalt;
}

/**
* Diese Methode setzt das Gehalt der Person auf den übergebenen Wert.
*/
public void setGehalt(int gehalt) {
this.gehalt = gehalt;
}

/**
* Diese Methode gibt den Straßennamen der Person zurück.
*/
public String getStrasse() {
return strasse;
}

/**
* Diese Methode setzt den Straßennamen der Person auf den übergebenen Wert.
*/
public void setStrasse(String strasse) {
this.strasse = strasse;
}

/**
* Diese Methode gibt die Postleitzahl der Person zurück.
*/
public int getPlz() {
return plz;
}

/**
* Diese Methode setzt die Postleitzahl der Person auf den übergebenen Wert.
*/
public void setPlz(int plz) {
this.plz = plz;
}

/**
* Diese Methode gibt den Wohnort der Person zurück.
*/
public String getOrt() {
return ort;
}

/**
* Diese Methode setzt den Wohnort der Person auf den übergebenen Wert.
*/
public void setOrt(String ort) {
this.ort = ort;
}
}
[/Java]
 
A

Alexander

Gast
Entschuldigung eigentlich sollte die Methode setName so aussehen:

[Java]
public void setName(String name) {
this.name = name;
}
[/Java]
 

ImmNek

Mitglied
@mg_666: Sicher, das stimmt. Mich hat allerdings trotzdem interessiert, wie sein Klasse nun aussieht (vorallem weil das Ganze nicht wirklich nach einem Profi tönt). Hat man mehr Informationen kann man besser und vorallem präziser agieren.

@Alexander: Nun würde ich, wie mg_666 schon vorgeschlagen hat, einfach eine Methode in der Klasse Personen hinzufügen, welche dir die Daten ausdruckt (oder in eine Datei schreibt). Mit dem Uterschied, dass ich sie .print() nennen würde und nicht .toString(), da sie ja genau genommen keinen String erzeugt. Alternativ könntest du natürlich auch ein Methode schreiben, welche einfach einen String liefert, welcher die Daten im gewünschten Format enthält.
 

faetzminator

Gesperrter Benutzer
Und wie soll denn die Ausgabe genau aussehen? Beispiel:
Gewollte Ausgabe: [c]Max Müller aus Zürich[/c]
Code:
Java:
public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append(getVorname());
    sb.append(" ");
    sb.append(getName());
    sb.append(" aus ");
    sb.append(getOrt());
    return sb.toString();
}
 
A

Alexander

Gast
Ich verstehe nicht warum ihr dauernd was ausgeben soll, ich habe doch nen comparator und eine sortiermethode mit kriterium, da muss man doch dann gar nix mehr ausgeben?? ok wenn ich dann die datei in ein textfile geschrieben habe, was habe ich dann davon? Bin eben noch anfänger ^^
 

faetzminator

Gesperrter Benutzer
Du willst die Personen ausgeben und nervst dich darüber, dass diese nicht lesbar sind - da die toString() Methode von Object aufgerufen wird. Wenn du eine leserliche Ausgabe willst, musst du toString() überschreiben. Was verstehst du da nicht? println() bzw. print() ruft auf einem Object (!= String) lediglich toString() auf und gibt den String, welcher zurückgegeben wird, aus.
 
A

Alexander

Gast
Hallo?? Könnte mir jemand pls erklären wieso?, meiner meinung nach total sinnlos das textausgeben mit System.out..., aber könnt ihr mir ja bestimmt dann erklären :D
 
A

Alexander

Gast
Ach danke, sry hatte nicht gesehen dass es auf der 2. seite weiterging und hab mich gewundert wieso keiner was sagt ^^
ok jetzt versteh ich das schon besesr :p
 

faetzminator

Gesperrter Benutzer
Hier als Nachtrag noch ein Auszug aus der Klasse PrintStream (Version von 2008-11-28):
Java:
// das rufst du auf, newLine() sollte selbsterklärend sein
public void println(Object x) {
    synchronized (this) {
        print(x);
        newLine();
    }
}

// das wird dadurch aufgerufen
public void print(Object obj) {
    write(String.valueOf(obj));
}

// und schlussendlich, String.valueOf() ruft auf deinem
// Object toString() auf, falls dieses nicht null ist,
// ansonsten wird "null" zurückgegeben
public static String valueOf (Object value) {
    return value != null ? value.toString() : "null";
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
String in ArrayList umwandeln Java Basics - Anfänger-Themen 1
S ArrayList<Byte> in String umwandeln Java Basics - Anfänger-Themen 5
F ArrayList<ArrayList<String>> to String[][] umwandeln? Java Basics - Anfänger-Themen 9
N Map<String, HashSet<String>> Umwandeln in Map<String, ArrayList<String>> Java Basics - Anfänger-Themen 14
F Arraylist<String>Ein Wort pro Zeile Java Basics - Anfänger-Themen 6
H Interface Wieso "List<String> list = new ArrayList<>[…]" Java Basics - Anfänger-Themen 4
L ArrayList<String> --> double[] array Java Basics - Anfänger-Themen 18
J ArrayList Name mit String erstellen Java Basics - Anfänger-Themen 8
BadBat ArrayList<String> sort by last word Java Basics - Anfänger-Themen 8
M ArrayList- größten String printen Java Basics - Anfänger-Themen 30
P Input/Output Arraylist nach String eines Objekts durchsuchen Java Basics - Anfänger-Themen 26
S String splitten und in ArrayList speichern Java Basics - Anfänger-Themen 4
N String ArrayList ohne Wiederholungen Java Basics - Anfänger-Themen 7
T String ArrayList Java Basics - Anfänger-Themen 7
B ArrayList<ArrayList<ArrayList<String>>> Java Basics - Anfänger-Themen 10
V Arraylist: Zählen welcher String am Häufigsten vorkommt Java Basics - Anfänger-Themen 5
L ArrayList als String ausgeben Java Basics - Anfänger-Themen 4
M ArrayList<String> alphabetisch sortieren Java Basics - Anfänger-Themen 5
R ArrayList<String> Komma oder Punkt "replacen" Java Basics - Anfänger-Themen 5
Binary.Coder List bzw. ArrayList als String ausgeben Java Basics - Anfänger-Themen 2
M Datentypen java.util.Arrays$ArrayList cannot be cast to [Ljava.lang.String; Java Basics - Anfänger-Themen 11
M string arraylist untersuchen frage Java Basics - Anfänger-Themen 6
T String aus einer ArrayList suchen Java Basics - Anfänger-Themen 7
StrikeTom Prüfen ob ArrayList string enhält! Wie??? Java Basics - Anfänger-Themen 5
2 Datentypen Kurze Schreibform bei ArrayList (Vs String Array) Java Basics - Anfänger-Themen 6
vandread Kann in einer String-ArrayList keine Zeichen anhängen Java Basics - Anfänger-Themen 5
X ArrayList to String[][] für JTable Java Basics - Anfänger-Themen 9
M Längster String in Arraylist Java Basics - Anfänger-Themen 2
D ArrayList<String> to Combobox Java Basics - Anfänger-Themen 7
M ArrayList, String Array und IndexOutOfBoundsException Java Basics - Anfänger-Themen 2
Z Kann man String[] in einer ArrayList verwenden? Java Basics - Anfänger-Themen 3
C Arraylist mit string array oder hashmap oder objekt? Java Basics - Anfänger-Themen 5
G Arraylist<String> füllen Java Basics - Anfänger-Themen 3
H ArrayList<String> und ArrayList<String[]> Java Basics - Anfänger-Themen 12
G ArrayList<String> durchsuchen Java Basics - Anfänger-Themen 8
C Long -> String -> ArrayList adden -> Exception Java Basics - Anfänger-Themen 4
G String auslesen bzw. arraylist speichern und laden Java Basics - Anfänger-Themen 14
N Ausgabe des Inhalts eines String Arrays in einer ArrayList Java Basics - Anfänger-Themen 4
F ArrayList zu String[] machen Java Basics - Anfänger-Themen 2
U casting: ArrayList to String[] Java Basics - Anfänger-Themen 10
krgewb ArrayList allgemein halten Java Basics - Anfänger-Themen 6
M Ausgabe einer ArrayList ensteht nur als Hashcode, nicht als Objekt Java Basics - Anfänger-Themen 16
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
J ArrayList in 2D-Array konvertieren. Java Basics - Anfänger-Themen 48
E Arrays in einer ArrayList miteinander vergleichen Java Basics - Anfänger-Themen 12
J ArrayList vergleichen im spiel Mastermind Java Basics - Anfänger-Themen 2
Mugetsu35 ArrayList Update ohne Index Java Basics - Anfänger-Themen 6
W Objekte einer ArrayList in txt-datei schreiben mit Paths? Java Basics - Anfänger-Themen 2
Z Java ArrayList speichert falsche Daten ab bzw. gibt falsche Daten aus? Java Basics - Anfänger-Themen 42
W if-Abfrage bei ArrayList-Methodenaufrufen - Wie löse ich das? Java Basics - Anfänger-Themen 6
W ArrayList und toString Java Basics - Anfänger-Themen 17
volcanos Addition -> List<Integer> mit Arrays.asList() versus List<Integer>ArrayList<>() Java Basics - Anfänger-Themen 14
ArrayList mit unbekannter Menge an Arrays die Arrays vergleichen Java Basics - Anfänger-Themen 9
M 2d ArrayList durchgehen Java Basics - Anfänger-Themen 2
Blkckroll45 Arraylist Java Basics - Anfänger-Themen 6
berserkerdq2 Geht collections.sort bei allen? Linkedhashset, ArrayList, HashSet etc. Java Basics - Anfänger-Themen 4
R Methoden Werte einer ArrayList als Parameter übergeben. Java Basics - Anfänger-Themen 4
L Dauerhaftes Speichern einer Eingabe bei einer ArrayList Java Basics - Anfänger-Themen 26
D Arraylist mit Komplexen Datentyp Java Basics - Anfänger-Themen 3
H Kompliziertes Sortieren einer ArrayList mit Objekten(Sortieren nach X und Y) Java Basics - Anfänger-Themen 11
T Permanentes speichern von Objekten in einer ArrayList Java Basics - Anfänger-Themen 6
volcanos List & ArrayList nach Familiennamen abfragen Java Basics - Anfänger-Themen 57
M static ArrayList in non-static Java Basics - Anfänger-Themen 12
berserkerdq2 Ich gebe eine ArrayList als List zurück per MEthode, wie kann ich nun aber die ArrayList speichern? Java Basics - Anfänger-Themen 46
M ArrayList<TreeNode<T>> fortlaufende Nummerierung der Elemente Java Basics - Anfänger-Themen 5
B Bungeecord | ProxiedPlayer wird nicht in ArrayList hinzugefügt Java Basics - Anfänger-Themen 1
S ArrayList Username und passwort mit JTextField eingaben abgleichen Java Basics - Anfänger-Themen 10
F Werte in einer Arraylist Zählen Java Basics - Anfänger-Themen 2
F Erste Schritte Zahlenreihe von Arraylist in 3erBlöcke sortiert in neue Arraylist Java Basics - Anfänger-Themen 2
M ArrayList mit einer Schleife befüllen Java Basics - Anfänger-Themen 2
F Methode ArrayList mit Eingabewert Java Basics - Anfänger-Themen 2
J ArrayList add methode selbst programmieren Java Basics - Anfänger-Themen 10
K Erste Schritte Wie schnell ist LinkedHashMap im Vergleich zur ArrayList, wenn alle Entries durchlaufen werden? Java Basics - Anfänger-Themen 47
thobren jtable arraylist Java Basics - Anfänger-Themen 12
N Exception beim Verwenden von Arraylist? Java Basics - Anfänger-Themen 10
P Schiebefix - ArrayList überschreibt Daten Java Basics - Anfänger-Themen 3
Zeppi OOP ArrayList Java Basics - Anfänger-Themen 2
P ArrayList Java Basics - Anfänger-Themen 4
L ArrayList auf 4 Elemente begrenzen Java Basics - Anfänger-Themen 56
C ArrayList sortieren nach bestimmten Buchstaben in den Wörtern Java Basics - Anfänger-Themen 13
S Arraylist<Object> mit verschiedenen Objects ausgeben Java Basics - Anfänger-Themen 3
J ArrayList auf bereits vorhanden eintrag prüfen Java Basics - Anfänger-Themen 5
M For Schleife/ArrayList Java Basics - Anfänger-Themen 12
L Längstes Element einer ArrayList ausgeben Java Basics - Anfänger-Themen 9
S Aus verschachtelter ArrayList auf einen Wert zugreifen Java Basics - Anfänger-Themen 4
L Methoden ArrayList Werte hinzufügen und löschen Java Basics - Anfänger-Themen 32
M ArrayList in GUI ausgeben Java Basics - Anfänger-Themen 1
J Nur bestimmter Typ aus der ArrayList ausgeben. Java Basics - Anfänger-Themen 9
Bademeister007 Hallo Leute ich hab eine Frage zur ArrayList Java Basics - Anfänger-Themen 8
Bademeister007 Operatoren Alle Zahlen einer ArrayList die durch 5 teilbar ist Java Basics - Anfänger-Themen 2
S Objekt aus Arraylist in andere Arraylist kopieren? Java Basics - Anfänger-Themen 2
C Sortieren einer ArrayList Java Basics - Anfänger-Themen 2
krgewb ArrayList von ArrayList Java Basics - Anfänger-Themen 2
R ArrayList Problem Java Basics - Anfänger-Themen 6
jonny_2k12 Wie kann ich eine ArrayList aus einer Klasse in eine andere übergeben? Java Basics - Anfänger-Themen 21
O Namen (mit Umlauten und ß) in einer ArrayList suchen Java Basics - Anfänger-Themen 5
N Typebound Objekte einer Arraylist hinzufügen Java Basics - Anfänger-Themen 7
R Methoden ArrayList clonen wirft exception Java Basics - Anfänger-Themen 3
S ArrayList in andere Klasse übernhemen Java Basics - Anfänger-Themen 5
M Letztes Element einer ArrayList Java Basics - Anfänger-Themen 12

Ähnliche Java Themen

Neue Themen


Oben