HashMap mit Daten aus ArrayList befüllen

Kaddl

Mitglied
Hi ihr.
Meine Aufgabe lautet:

"Für eine Kontaktliste sollen Name, Adresse, Telefonnummer und Emailadresse einer Person in einer HashMap gespeichert werden. Diese sollen in einer ArrayList vorgehalten werden. Erstellen Sie die besagte HashMap und füllen Sie sie mit Daten für drei Personen."

Ich habe bereits zwei Klassen erstellt.

Die Klasse Person:

Java:
public class Person {
	private String m_name;
	private String m_eMail;
	private String m_phone;
	private String m_street;
	private String m_wohnort;
	
	public Person() {

	}
	
	public Person(String name, String eMail, String phone, String street, String wohnort){
		m_name = name;
		m_eMail = eMail;
		m_phone = phone;
		m_street = street;
		m_wohnort = wohnort;
	}
           //Getter und Setter
	public String getM_name() {
		return m_name;
	}
	public void setM_name(String m_name) {
		this.m_name = m_name;
	}
	public String getM_eMail() {
		return m_eMail;
	}
	public void setM_eMail(String m_eMail) {
		this.m_eMail = m_eMail;
	}
	public String getM_phone() {
		return m_phone;
	}
	public void setM_phone(String m_phone) {
		this.m_phone = m_phone;
	}
	public String getM_street() {
		return m_street;
	}
	public void setM_street(String m_street) {
		this.m_street = m_street;
	}
	public String getM_wohnort() {
		return m_wohnort;
	}
	public void setM_wohnort(String m_wohnort) {
		this.m_wohnort = m_wohnort;
	}
	
	public static void main(String[] args) {
		new Person();
}

und meine Klasse HashTest:

Java:
import java.util.*;

public class HashTest {
	
	
	public HashTest() {

	}

	public static void main(String[] args) {	
		Map<String, ArrayList<Person>> kontaktListe = new HashMap<String,ArrayList<Person>>();
		ArrayList<Person> kontaktDaten = new ArrayList<Person>();	
		
		kontaktDaten.add(0, new Person("Daniel", "Daniel@aol.de", "08315364", "Memminger Straße 100", "Kempten"));
		kontaktDaten.add(1, new Person("Andreas", "andy@gmx.de", "0833196870", "Hauptstraße 10a", "Memmingen"));
		kontaktDaten.add(2, new Person("Isabell", "isi_bell@web.de", "089775361", "Theresienstraße 5", "München"));
	
		kontaktListe.put(key, value);
		
		//System.out.println() zum Testen der ArrayList!
	/*	System.out.println("Person 1:");
		System.out.println("Name: " + kontaktDaten.get(0).getM_name());
		System.out.println("E-Mail: " + kontaktDaten.get(0).getM_eMail());
		System.out.println("Telefonnummer: " + kontaktDaten.get(0).getM_phone());
		System.out.println("Straße: " + kontaktDaten.get(0).getM_street());
		System.out.println("Ort: " + kontaktDaten.get(0).getM_wohnort());
	*/
	}

}

Mein Problem liegt jetzt darin, dass ich nicht weiß, wie ich die ArrayList in meine HashMap fülle. Ich würde die Methode .put() nutzen, weiß aber nicht was mit "key" und "value" gemeint ist.

Hat mir jemand eine Idee, wie ich das löse?:bloed:
Ich hab schon geoogelt, aber nichts gefunden, mit dem ich was anfangen kann 😀

Danke schon mal 🙂
 
Zuletzt bearbeitet:
Ich würde dir ja gerne helfen, aber ich verstehe nicht für'n Pfennig den Sinn der Aufgabe, denn HashMap und ArrayList ist doch total doppeltgemoppelt. Beides sind Speicher für eine Sammlung gleichartiger Datensätze...

Sorry...
 
Ja naja.. ich hab mir die Aufgabe nicht selbst gestellt^^ Mein Klassenkamerade hat auch gesagt, dass die Aufgabe so keinen Sinn macht...
Nur leider muss ich das ja irgendwie lösen 🙁
 
Das glaube ich dir, dass diese Aufgabenstellung nicht auf deinem Mist gewachsen ist...
Ich würde dir wirklich gerne helfen, aber ich habe keine Idee, was euer Lehrer hier tatsächlich von euch will.
 
leute ... wirklich .. was is das hier ? ... 7te klasse möchtegern-informatik ?

lernt doch bitte mal lesen ...


"Für eine Kontaktliste sollen Name, Adresse, Telefonnummer und Emailadresse einer Person in einer HashMap gespeichert werden."
ganz klar erfasst : 4 Strings in einer HashMap

"Diese (die HashMaps) sollen in einer ArrayList vorgehalten werden."
auch einfach : die Maps in ne Liste werfen

lösung

Java:
List<Map<String, String>> kontakte=new ArrayList<Map<String, String>>();

Map<String, String> person1=new HashMap<String, String>();
person1.put("Name", "Banana Joe");
person1.put("Addresse", "Bananen Dampfer #3 im Hafen XYZ");
person1.put("Telefonnummer", "1-123-555-1234");
person1.put("Emailadresse", "bananajoe@ship3.tld");

kontakte.add(person1);

kindergartenaufgabe ... man sollte die aufgabenstellung nur mal richtig lesen (können)
 
Erstellen Sie die besagte HashMap und füllen Sie sie mit Daten für drei Personen.

Ich habe es so verstanden, dass nur eine HashMap erstellt werden soll und nicht für jede Person eine.


Mein Lösungsansatz:

Code:
     List<Person> persons = new ArrayList<Person>();
     persons.add(new Person(..));
        
     HashMap<Long,Person> map = new HashMap<Long,Person>();
        
     for(Person person: persons){
            map.put(person.getId(), person) //jede Person braucht einen eindeutigen Key
     }
 
Ich habe es so verstanden, dass nur eine HashMap erstellt werden soll und nicht für jede Person eine.


Mein Lösungsansatz:

Code:
     List<Person> persons = new ArrayList<Person>();
     persons.add(new Person(..));
        
     HashMap<Long,Person> map = new HashMap<Long,Person>();
        
     for(Person person: persons){
            map.put(person.getId(), person) //jede Person braucht einen eindeutigen Key
     }

Ich habe mit meinem Tutor gesprochen und er hat es genau so gemeint. Also drei HashMaps erstellen und diese dann in eine ArrayList speichern.
 
Hab es aber doch noch so gelöst:

Java:
	public HashTest() {

	}

	public static void main(String[] args) {	
		HashMap<String, ArrayList<Person>> kontaktListe = new HashMap<String,ArrayList<Person>>();
		ArrayList<Person> kontaktDaten = new ArrayList<Person>();	
		
		kontaktDaten.add(0, new Person("Daniel", "Daniel@aol.de", "0831/5364", "Memminger Straße 100", "Kempten"));
		kontaktDaten.add(1, new Person("Andreas", "andy@gmx.de", "08331/96870", "Hauptstraße 10a", "Memmingen"));
		kontaktDaten.add(2, new Person("Isabell", "isi_bell@web.de", "089/775361", "Theresienstraße 5", "München"));
	

		kontaktListe.put("myKey", kontaktDaten);
		
		System.out.println("Person 1:");
		System.out.println("Name: " + kontaktListe.get("myKey").get(0).getName());
		System.out.println("E-Mail: " + kontaktListe.get("myKey").get(0).geteMail());
		System.out.println("Telefonnummer: " + kontaktListe.get("myKey").get(0).getPhone());
		System.out.println("Straße: " + kontaktListe.get("myKey").get(0).getStreet());
		System.out.println("Wohnort: " + kontaktListe.get("myKey").get(0).getWohnort());
		System.out.println("");
		
		System.out.println("Person 2:");
		System.out.println("Name: " + kontaktListe.get("myKey").get(1).getName());
		System.out.println("E-Mail: " + kontaktListe.get("myKey").get(1).geteMail());
		System.out.println("Telefonnummer: " + kontaktListe.get("myKey").get(1).getPhone());
		System.out.println("Straße: " + kontaktListe.get("myKey").get(1).getStreet());
		System.out.println("Wohnort: " + kontaktListe.get("myKey").get(1).getWohnort());
		System.out.println("");
		
		System.out.println("Person 3:");
		System.out.println("Name: " + kontaktListe.get("myKey").get(2).getName());
		System.out.println("E-Mail: " + kontaktListe.get("myKey").get(2).geteMail());
		System.out.println("Telefonnummer: " + kontaktListe.get("myKey").get(2).getPhone());
		System.out.println("Straße: " + kontaktListe.get("myKey").get(2).getStreet());
		System.out.println("Wohnort: " + kontaktListe.get("myKey").get(2).getWohnort());
		System.out.println("");
		
	
	}

}

an der Klasse Person hat sich nichts geändert.
 
hallo,
wenn die erste Klasse gleich bleibt solltest du die Zugriffe richtig stellen....

Java:
........ + kontaktListe.get("myKey").get(0).getM_name());

statt
Java:
......getName());
 
Zuletzt bearbeitet:
Entschuldige. Hab in der Klasse Person doch was geändert:

Java:
public class Person {
	private String name;
	private String eMail;
	private String phone;
	private String street;
	private String wohnort;
	
	public Person() {

	}
	
	public Person(String name, String eMail, String phone, String street, String wohnort){
		this.name = name;
		this.eMail = eMail;
		this.phone = phone;
		this.street = street;
		this.wohnort = wohnort;
	}
	
	//Getter und Setter
	
	

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String geteMail() {
		return eMail;
	}

	public void seteMail(String eMail) {
		this.eMail = eMail;
	}

	public String getPhone() {
		return phone;
	}

	public void setPhone(String phone) {
		this.phone = phone;
	}

	public String getStreet() {
		return street;
	}

	public void setStreet(String street) {
		this.street = street;
	}

	public String getWohnort() {
		return wohnort;
	}

	public void setWohnort(String wohnort) {
		this.wohnort = wohnort;
	}
	public static void main(String[] args) {
		new Person();

	}
}

Jetzt passt das auch wieder 🙂
 
also wenn dein tutor es wirklich in die richtung "daten in hashmap werfen und die dann in ner arraylist sammeln" gemeint hat ... dann kann ich mir kaum vorstellen das er deine lösung als "korrekt" ansieht ...

klar ist zu erkennen das der wille da war ... aber man sieht auch das du ja nicht mal die aufgabe richtig verstanden hast
 
also wenn dein tutor es wirklich in die richtung "daten in hashmap werfen und die dann in ner arraylist sammeln" gemeint hat ... dann kann ich mir kaum vorstellen das er deine lösung als "korrekt" ansieht ...

klar ist zu erkennen das der wille da war ... aber man sieht auch das du ja nicht mal die aufgabe richtig verstanden hast

Dazu muss ich ein paar Dinge sagen:

1. jeder kann sich mal 'verlesen'
2. mein Azubi-Tutor war vollkommen zufrieden mit dieser Lösung; "So wie du es gemacht hast, find ich das auch gut"
3. hab ich das, so wie es ursprünglich verlangt wurde, auch noch gelöst
und 4. du warst wirklich der einzigste, der das quasi richtig verstanden hat. In einem weiteren Forum hat es jeder so gemacht wie ich zu Beginn und auch Azubi Kollegen haben das falsch gelesen.

Sowas kann halt mal passieren und es war auch nur eine Übungsaufgabe. Du kannst mir auch ned erzählen, dass du dich noch nie verlesen hast!😛ueh:
 
ne is ja ok ... aber das analytische vorgehen wie man eine text-aufgabe auseinander nimmt und was einzelne bestandteile in welcher reihenfolge zu bedeuten haben sollte man eigentlich schon recht früh im mathe-unterricht lernen

sicher ... die aufgabenstellung an sich ist realtiv ungünstig formuliert und lässt schon von sich aus fehler zu ...
z.B. was viele scheinbar "falsch" gemacht haben : den punkt "einer Person" so zu verstehen das man eine klasse namens "Person" erzeugen soll und diese dann in eine Map oder List werfen soll
macht so für sich selbst genommen schon sinn ... aber dann würde es nicht mehr passen warum man dann noch Map und List in einander packen sollte ... egal wie rum

also kommt man schon mal darauf : Person als extra-klasse ? irgendwie falsch

weiter ist es auch ungünstig ausgedrückt : "Erstellen sie die besagte HashMap" ...
öhm WHAT ? soll jetzt nur ein objekt vom typ HashMap erzeugt werden oder soll man sich doch wieder mit ner klasse "Person" was zusammen basteln ... warum dann aber trotzdem noch Map und List ? und macht mit der obigen aussage auch irgendwie keinen sinn


wie genau man sich jetzt bei der aufgabe "verlesen" soll ist mir leider nicht ganz klar ... was ich jedoch nachvollziehen kann das man auf grund extrem schlechter aufgabenformulierung noch so einige andere möglichkeiten offen hat die mit ein bisschen biegen und brechen auch der aufgabe entsprechen würden .... aber so im "produktiven einsatz" keinen sinn ergeben oder so nicht genutzt werden würden



man muss sich bei solchen aufgaben immer auch im hinterkopf denken : wie würe sowas für den produktiven einsatz mit X=10'000 aussehen ... macht da mein code noch sinn ?

gut ... wenn man die erfahrung nicht hat wird es schwer sich sowas vorstellen zu können und man wird am anfang oft daneben liegen ... aber dafür lernst du es ja grade
 

Zurück
Oben