toString-Methode für Map

Sinista

Mitglied
moin

ich hab mir paar schöne Klassen geschrieben

Ich hab ne Map in der ich Personen habe die wiederum aus Usern bestehen und alles was dazugehört haben wie password, username usw.
Dann habe ich auch eine Main TestFrame die vorgegeben ist und die ich nicht verändern darf.

Deswegen habe ich meine Klasse ZMS in der einige Methoden und die Map erstellt wird und Personen, User (und noch einige andere Klassen die aber wohl für die frage ,hoffe ich net wichtig sind).

Nun möchte ich zur ausgabe der Map eine toString-Methode schreiben.

Bisher habe ich nur folgendes gemacht (mal nen Beispiel aus meiner Klasse Person wobei mir klar ist das das irgendwie anders muss :))
Java:
package klausuren;

public class Person {

	String sname;
	String fname;
	String dep;
	int id;

	public Person(String sname, String fname, String dep) {
		setSname(sname);
		setFname(fname);
		setDep(dep);
	}

	public String getSname() {
		return sname;
	}

	public void setSname(String sname) {
		this.sname = sname;
	}

	public String getFname() {
		return fname;
	}

	public void setFname(String fname) {
		this.fname = fname;
	}

	public String getDep() {
		return dep;
	}

	public void setDep(String dep) {
		this.dep = dep;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String toString() {
        return "Name: " + sname + "\nVorname: "
        + fname + "\ndep: " + dep + "\nAktion: " + id;
    } 
	
	
}


Was ich jetzt gerne wissen würde wie bekomme ich ne toString methode hin die mir die ganze map ausgibt.
- Reicht das wenn ich eine Methode in der Klasse schreibe in der ich meine Map habe oder muss ich für jede klasse so eine methode schreiben und wie rufe ich diese Methode auf wenn ich sie nicht in der main aufrufen darf?
 

Der Müde Joe

Top Contributor
Meinst du sowas:
Java:
        Map<String,String> map = new HashMap<String, String>();
        StringBuilder builder = new StringBuilder();
        for(Map.Entry<String, String> entry : map.entrySet()) {
            builder.append(entry.getValue().toString());
        }
        String bla = builder.toString();
 

Sinista

Mitglied
Meinst du sowas:
Java:
        Map<String,String> map = new HashMap<String, String>();
        StringBuilder builder = new StringBuilder();
        for(Map.Entry<String, String> entry : map.entrySet()) {
            builder.append(entry.getValue().toString());
        }
        String bla = builder.toString();

danke das sieht doch schon interessant aus:)
werds mal ausprobieren und mich mal wieder melden
 
Zuletzt bearbeitet:

Sinista

Mitglied
wollte mal fragen ob ich das auch richtig verstehe

StringBuilder builder = new StringBuilder();
damit wird der StrinBuilder erzeugt


for(Map.Entry<String, String> entry : map.entrySet()) {
builder.append(entry.getValue().toString());
}

for schleife in der an den builder immerwieder die methode getValue drangehängt wird
String bla = builder.toString();

wenn ich diese methode jetzt habe kann ich die auch aufrufen ohne das in die main zu schreiben sprich einfach system.out... dahintersetzten?
 

nrg

Top Contributor
wollte mal fragen ob ich das auch richtig verstehe
StringBuilder builder = new StringBuilder();
damit wird der StrinBuilder erzeugt
genau
for(Map.Entry<String, String> entry : map.entrySet()) {
builder.append(entry.getValue().toString());
}

for schleife in der an den builder immerwieder die methode getValue drangehängt wird
jedes Element der Map wird durchlaufen und temporär in eine Map namens entry geschrieben (wird im Schleifenkopf deklariert) und von dieser der Wert an den StringBuilder drangehängt.
String bla = builder.toString();

wenn ich diese methode jetzt habe kann ich die auch aufrufen ohne das in die main zu schreiben sprich einfach system.out... dahintersetzten?

wenn du einen String return hast schon.

Java:
return builder.toString();


grüße
 
S

SlaterB

Gast
> in der methode von oben

welche? wo geht es überhaupt um Maps, im Code vom ersten Posting jedenfalls nicht,
poste doch mal etwas mehr zur Umgebung,

builder.toString() liefert einen String, was du damit machen willst ist eine zweite Frage,
kann man direkt ausgeben oder zurückgeben, wenn es eine Methode ist,
natürlich nicht gerade die main-Methode, aber andere wie

public String toString() {
..
}

oder


public String gibStringFuerIrgendwas() {
..
}
 

Der Müde Joe

Top Contributor
>jedes Element der Map wird durchlaufen und temporär in eine Map namens entry geschrieben

hum? Man Iteriert über das entrySet() der Map. Die Methode liefert ein Set von Entry<K,V>.
Da Entry eine innere Klasse ist: Map.Entry<K,V> (aber nur zur veranschaulichung, würd ich sonst
nicht machen und nur Entry schreiben)

EDIT:
Ein Entry ist nix anderes als ein Key-Value Paar der Map. getValue() gibt dass logischerweise
den Value des Eintrags zurück. getKey() den key der benutzt wurde um den Value in die Map zu kriegen.
 
Zuletzt bearbeitet:

Sinista

Mitglied
sorry die frage war unnötig habs jetzt hinbekommen mit return


würde jetzt nur noch gerne wissen an welcher stelle ich das formatieren kann weil ich so ne ausgabe bekomme

Account: chok_c
Password: klausuren.Password@a3901c6Account: allma_ag
Password: klausuren.Password@24a37368Account: hase_h
Password: klausuren.Password@66edc3a2Account: marx_m
Password: klausuren.Password@3c6f579Account: feuers_f
Password: klausuren.Password@7b1ddcdeAccount: kluge_k
Password: klausuren.Password@658fb1f7Account: duck_d
Password: klausuren.Password@3ced0338Account: torfs_t
Password: klausuren.Password@6c6e70c7Account: wolf_w
Password: klausuren.Password@46ae506eAccount: xanadu_x
Password: klausuren.Password@5e228a02Account: defoy_d
Password: klausuren.Password@2d92b996Account: eilig_e
Password: klausuren.Password@7bd63e39Account: flof_f
Password: klausuren.Password@2e8f4fb3Account: allma_aa
Password: klausuren.Password@42b988a6Account: gjoen_g
Password: klausuren.Password@22ba6c83Account: allma_ac
Password: klausuren.Password@7d2a1e44

Ich würde da ja gerne nur name, password ... stehen haben.
kann ich das so in der schleife deklarieren

"Account: " + account + "\nPassword: "
+ pw + "\nPerson: " + person ;
 
S

SlaterB

Gast
pw ist vom unbekannten Typ Password, du musst dessen toString()-Methode überschreiben oder
pw.getEinenString() aufrufen, wenn es z.B. irgendeine Methode gibt, die das Passwort als String zurückgibt

der Zeilenumbruch \n zwischen Account und Passwort ist ja merkwürdig..
 

Sinista

Mitglied
pw ist vom unbekannten Typ Password, du musst dessen toString()-Methode überschreiben oder
pw.getEinenString() aufrufen, wenn es z.B. irgendeine Methode gibt, die das Passwort als String zurückgibt

hast recht :)

Ich habe auch eine klasse Password die von der aufgabe verlangt wird aber ich momentan noch net soweit bin das sie verwendet wird

Java:
package klausuren;

public class Password {
	
	String secret_pw;

	public String getSecret_pw() {
		return secret_pw;
	}

	public void setSecret_pw(String secretPw) {
		secret_pw = secretPw;
	}

}

Jetzt frage ich mich nur grade ob ich das Password was ich mir in User erstelle in irgendeiner weise damit zu tun hat

Java:
package klausuren;

public class User {

	String account;
	Password pw;
	Person person;
	int id;

	public User(String account, Password password, Person person) {
		setAccount(account);
		setPw(password);
		setPerson(person);
	}


	public String getAccount() {
		return account;
	}

	public void setAccount(String account) {
		this.account = account;
	}

	public Password getPw() {
		return pw;
	}

	public void setPw(Password pw) {
		this.pw = pw;
	}

	public Person getPerson() {
		return person;
	}

	public void setPerson(Person person) {
		this.person = person;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}
	public String toString() {
        return "Account: " + account + "\nPassword: "
        + pw + "\nPerson: " + person + "\nID:" + id +"\n";
    } 
	
}

Da ich ja Password pw verwende aber auch schon eine getter methode habe und die ausgabe klappt jetzt bis auf das PW ganz gut

Account: chok_c
Password: klausuren.Password@a3901c6
Person: Name: Chok
Vorname: Charlie
dep: Marketing
ID: 0
ID:0

Wird mein password dan in der klasse Password gespeichert oder bleibt das in der Klasse User, weil ich sonst die methode getSecret_pw() verwenden würde.
glaube aber net das das richtig ist weil secret_pw was anderes ist wie pw
 

Der Müde Joe

Top Contributor
Ich weiss jetzt nicht genau was du willst, aber mal allgemein:

Wenn du eine String-Operation auf ein Objekt aufrufst, wird automatisch die toString() Methode des Objektes benutzt. Wenn du keine toString() definiert hast, diejenige der Oberklasse, bis zu Object. Die von Object macht:
getClass().getName() + '@' + Integer.toHexString(hashCode())

wenn du also auf ein Password-Objekt eine String-Operations aufrufst, wird das durch das da oben ersetzt
zB
Java:
Password p = new ...
System.out.println(p); // --> toString von Object: klausuren.Password@a3901c6
//das gleiche bei + etc:
String s = "test:::" + p; // --> test:::klausuren.Password@a3901c6

wenn du was anderes willst, musst du eben toString überschreiben.
 

Sinista

Mitglied
also das bedeutet das ich keine vernünftige toString ausgabe für pw habe?
wenn ich jetzt zum beispiel diese variablen nehme die ich ausgebe


String account;
Password pw;
Person person;
int id;

dan bekomme ich ja für alles bis auf pw meine passende ausgabe.
und bei den anderen sachen habe ich ja auch nix besonderes gemacht, der einzige unterschied zu der klasse Person ist nur das es dort nen Konstruktor gibt

Ich hab in meiner klasse Password auch ne toString methode eingefügt die secret_pw ausgibt aber da bekomme ich dan nur null zurück

ich glaube ich habe auch noch net ganz kapiert an welcher stelle ich bei dem Password ansetzten muss. Bei Password pw oder String secret_pw wobei ich glaube das es das erste ist.
 

Der Müde Joe

Top Contributor
so ca. wäre optimal:
Java:
public class Password {

private String password;

public Password(String password) {
 if(password == null) {
  throw new IllegalArgumentException("password is null");
 }
this.password = password;
}

@Override
public String toString() {
 return this.password;
}
}

Das Problem bei deiner Variante:
Du erstellst evtl ein Password-Objekt. alles wird mit null initialisiert (alle Objekte, dazu gehört auch String).
Nun gibts du das Objekt (String) [edit2] in der toString-Methode[/edit2] zurück. Naja...ist null. Also "null".
Bei Person hast du sicher toString mit "Name" + name; überschrieben.

EDIT:
Wenn du bei deiner Version das Passwort nicht mit der set-Methode setzt, ist es eben null.
 
Zuletzt bearbeitet:

Sinista

Mitglied
so ca. wäre optimal:
Java:
public class Password {

private String password;

public Password(String password) {
 if(password == null) {
  throw new IllegalArgumentException("password is null");
 }
this.password = password;
}

@Override
public String toString() {
 return this.password;
}
}

Das Problem bei deiner Variante:
Du erstellst evtl ein Password-Objekt. alles wird mit null initialisiert (alle Objekte, dazu gehört auch String).
Nun gibts du das Objekt (String) [edit2] in der toString-Methode[/edit2] zurück. Naja...ist null. Also "null".
Bei Person hast du sicher toString mit "Name" + name; überschrieben.

EDIT:
Wenn du bei deiner Version das Passwort nicht mit der set-Methode setzt, ist es eben null.


vielen dank für deine hilfe jetzt wird mir einiges klarer
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Einrücken inner der toString()-Methode Java Basics - Anfänger-Themen 34
A Implementierung von String toString methode() Java Basics - Anfänger-Themen 4
P Methode die eigentlich einen Scanner benötigt mit toString() Java Basics - Anfänger-Themen 5
M Die Inhalte eines Arrays mit der Methode Arrays.toString ausgeben Java Basics - Anfänger-Themen 4
H toString-Methode Java Basics - Anfänger-Themen 24
J toString-Methode in Verbindung mit varArgs-Konstruktor Java Basics - Anfänger-Themen 18
TomatenBrot447 Mit toString eine Ausgabe liefern wie in einer schon implementierten Methode ? Java Basics - Anfänger-Themen 13
TomatenBrot447 Mit toString eine Ausgabe liefern wie in einer schon implementierten Methode ? Java Basics - Anfänger-Themen 1
V ToString-Methode mit JUnit testen(BlueJ) Java Basics - Anfänger-Themen 10
J toString() Methode und ArrayList Java Basics - Anfänger-Themen 1
H Erste Schritte Arrayes.toString methode funktioniert nicht Java Basics - Anfänger-Themen 2
A Problem mit toString Methode Java Basics - Anfänger-Themen 8
T String toString methode nicht vererbt ... Java Basics - Anfänger-Themen 4
M Unbekannte Nummer bei Aufruf der toString Methode Java Basics - Anfänger-Themen 3
A ToString()-Methode richtig benutzen Java Basics - Anfänger-Themen 3
J Vererbung Überschriebene toString-Methode aufrufen Java Basics - Anfänger-Themen 10
P toString-Methode gibt immer null vor Variable aus Java Basics - Anfänger-Themen 9
B Methoden toString Methode mit Schlüsselwort new Java Basics - Anfänger-Themen 3
L toString()-Methode in verschieden Klassen Java Basics - Anfänger-Themen 3
R Frage zu statischer Methode toString() Java Basics - Anfänger-Themen 3
S Stack als verkettete liste/ toString methode Java Basics - Anfänger-Themen 3
F toString Methode ausgeben Java Basics - Anfänger-Themen 3
L OOP hilfe bei tostring methode Java Basics - Anfänger-Themen 6
D Frage zum Aufruf einer toString-Methode Java Basics - Anfänger-Themen 2
V toString()-Methode Java Basics - Anfänger-Themen 9
S PrintWriter-Probleme mit toString Methode->Person@17182c1 Java Basics - Anfänger-Themen 10
W LocalDate toString und nach Split falsch "erkannt"? Java Basics - Anfänger-Themen 8
W ArrayList und toString Java Basics - Anfänger-Themen 17
W toString bei composition Java Basics - Anfänger-Themen 4
M Unterschied Integer.toString(x) und x.toString() Java Basics - Anfänger-Themen 22
W Objekte über Scanner Input; ToString Probleme... Java Basics - Anfänger-Themen 4
M Polymorphie toString Java Basics - Anfänger-Themen 13
Y Wie kann ich ein Element in einer toString finden. Java Basics - Anfänger-Themen 2
P falscher booleanwert bei toString Java Basics - Anfänger-Themen 4
M Wie analysiert JSON eine toString-Ausgabe ? Java Basics - Anfänger-Themen 1
J Methoden toString()-Date Formatter Java Basics - Anfänger-Themen 8
V Neue Ausgabe von toString nach Methodenaufruf Java Basics - Anfänger-Themen 9
E Vererbung mit toString() Java Basics - Anfänger-Themen 6
O Referenz - toString Java Basics - Anfänger-Themen 9
B toString mit optionaler Ausgabe überrschreiben Java Basics - Anfänger-Themen 5
C Methoden toString Java Basics - Anfänger-Themen 4
B toString() Dilemma Java Basics - Anfänger-Themen 7
D Arrays.toString spuckt null aus? Java Basics - Anfänger-Themen 3
S Methoden equals(object o) / toString Java Basics - Anfänger-Themen 15
K array in toString des objektes ausgeben Java Basics - Anfänger-Themen 1
Psypsy hashCode, equals und toString Java Basics - Anfänger-Themen 3
K toString() Java Basics - Anfänger-Themen 1
I Vererbung toString() Frage Java Basics - Anfänger-Themen 5
E Richtige Ausgabe nur mit toString() - Warum? Java Basics - Anfänger-Themen 4
S Datentypen List.toString wirft NullPointerException Java Basics - Anfänger-Themen 5
J ArrayList toString() Übergabe Fehler Java Basics - Anfänger-Themen 2
F Eigene LinkedList - toString Java Basics - Anfänger-Themen 10
A JList / toString modify Java Basics - Anfänger-Themen 2
M toString gibt "null" statt "0.0" aus Java Basics - Anfänger-Themen 5
M toString Java Basics - Anfänger-Themen 7
H Integer.toString(int i) vs. String.valueOf(int i) Java Basics - Anfänger-Themen 12
C Methoden String von einem toString() herauslesen Java Basics - Anfänger-Themen 2
B Wann toString() überschreiben? Java Basics - Anfänger-Themen 21
N .toString() und (string) Java Basics - Anfänger-Themen 2
S schwierigkeit mit in der verwaltungsklasse benutzen von toString() Java Basics - Anfänger-Themen 7
J Zweidimensionales Array durch ToString ausgeben lassen Java Basics - Anfänger-Themen 21
N Matrix an toString Java Basics - Anfänger-Themen 7
A Werteausgabe des Construktors mit toString Java Basics - Anfänger-Themen 2
D super.tostring Java Basics - Anfänger-Themen 8
A Stringarray toString Java Basics - Anfänger-Themen 5
S Escape Sequenz in der toString() ? Java Basics - Anfänger-Themen 4
A Arrays.asList(s).toString() ohne [] und , Java Basics - Anfänger-Themen 3
P toString Java Basics - Anfänger-Themen 4
M .toString(); // Ausgabe: Attribut von Vaterklasse Java Basics - Anfänger-Themen 12
K toString Java Basics - Anfänger-Themen 10
A Object -> String mit valueOf, toString oder cast ? Java Basics - Anfänger-Themen 6
R getClass und getName sowie toString Java Basics - Anfänger-Themen 10
D Arrays.toString problem Java Basics - Anfänger-Themen 2
D array.toString() wieso funktioniert es nicht Java Basics - Anfänger-Themen 4
D toString überschreiben + Exception werfen Java Basics - Anfänger-Themen 3
H toString / println Java Basics - Anfänger-Themen 2
H toString() erben? Java Basics - Anfänger-Themen 3
A Arrays.toString() ohne [ und ] Java Basics - Anfänger-Themen 2
K Arrays.toString(); funktioniert nicht Java Basics - Anfänger-Themen 4
A byte.toString() -> Datenmüll Java Basics - Anfänger-Themen 52
K Problem mit .toString und FileReader Java Basics - Anfänger-Themen 2
G toString Problem Java Basics - Anfänger-Themen 12
G Gregorian Calendar aus toString() Ausgabe wiederherstellen Java Basics - Anfänger-Themen 4
T Warum Fehlermeldung bei diesem ToString Programm? Java Basics - Anfänger-Themen 2
B toString Java Basics - Anfänger-Themen 5
S Was macht [Integer.toString(number, tarRadix)] Java Basics - Anfänger-Themen 3
G Probleme bei toString Überschreibung Java Basics - Anfänger-Themen 6
M int toString Datentypen Umwandeln, AnfängerProblem Java Basics - Anfänger-Themen 3
T keine Ausgabe von toString obwohl keine Fehlermeldung Java Basics - Anfänger-Themen 5
D ToString Java Basics - Anfänger-Themen 3
C Bedeutung von toString im Bezug auf Text Java Basics - Anfänger-Themen 4
N char[] aus JPasswordField toString() Java Basics - Anfänger-Themen 6
T Boolean toString ? Java Basics - Anfänger-Themen 3
H toString(); varargs; bitSet Java Basics - Anfänger-Themen 8
M getClass() und getClass().toString() Java Basics - Anfänger-Themen 4
P Vektor toString? Java Basics - Anfänger-Themen 2
S valueOf() vs. toString() Verwendung??? Java Basics - Anfänger-Themen 13
G Frage zur toString ? Java Basics - Anfänger-Themen 4
L .toString wieder rückgängig machen Java Basics - Anfänger-Themen 7
H Was ist toString ??? Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben