Zum Inhalt springen

HashMap mit Daten aus ArrayList füllen


IT-Kaetzchen

Empfohlene Beiträge

Hi Leute, folgendes...

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.

Klasse HashTest:

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("myKey", kontaktDaten);


		System.out.println(kontaktListe);


		//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());

	*/

	}


}

Klasse Person:
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();


	}

}

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?

Ich hab schon geoogelt, aber nichts gefunden, mit dem ich was anfangen kann

Danke schon mal :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich weiß, kann dir eigentlich jeder sagen und ich mache es mir einfach:

HashMap (Java Platform SE 7 )

Eine gute Erklärung

Eine HashMap dient zum speichern von Key-Value (Schlüssel-Wert) Paaren. Das heisst man gibt einen Schlüssel an und kann zu diesem Schlüssel einen Wert abspeichern und zu genau diesem Schlüssel auch den Wert wieder aus der HashMap herausholen. Ein Schlüssel kann ein beliebiges Objekt sein und ist meist eine Object Id, Speicheradresse oder ein String. Wichtig ist jedoch, dass ein Schlüssel eindeutig ist, sodass niemals ein Schlüssel für zwei Werte exisitiert.

Technisch funktioniert die HashMap so, dass aus dem Schlüssel ein Hash-Wert berechnet wird der als Adresse in einer Tabelle dient wo der Wert abgespeichert wird. Das berechnen eines solchen Hashs ist nicht immer leicht, aber Java bietet standardmäßig ein recht solides Verfahren für die meisten primitiven Datentypen (die Methode hash() in Object dient genau dazu und wird in String etc. überschrieben). Eine gute Einführung in Hashwerte kann auf der Wikipedia nachgelesen werden.

Quelle: Java HashMap

Hoffentlich hilft es dir :),

Edit: http://www.tutorials.de/java-grundlagen/336903-hashmap.html

Bearbeitet von p_krger
Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke schonmal, aber leider bringt mir das nichts.

Ich hab schon alles mögliche ausprobiert.. nichts funktioniert. Ich weiß nicht wie ich das was ich in der ArrayList habe, in die HashMap reinspeichern soll.

Wenn ich schreibe:

kontaktListe.put("MyKey", kontaktDaten);
Dann gibt er mir in der Konsole folgendes aus:
{myKey=[Person@42e816, Person@9304b1, Person@190d11]}

Ich will aber das ausgeben, was in jedem einzelnen Array steht. Also "Daniel" .. usw.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Erfolgt beim Schreiben in ein Array nicht so eine Typkonvertierung? Ich lasse mir die Inhalte meiner Array immer über ganz billige for-Schleifen ausgeben, sodass ich wirklich jeden Wert erwische. Je nachdem, was du für eine Arraylist hast kannst du zB .toString() oder solche Methoden benutzen.

Aber warte mal, ist es überhaupt möglich eine Hashmap über ein String und eine Arraylist zu deklarieren? Es heißt ja: ein Wert -> eine Zuordnung.

Wichtig ist jedoch, dass ein Schlüssel eindeutig ist, sodass niemals ein Schlüssel für zwei Werte exisitiert.

Edit:

Habe hier noch etwas gefunden:

http://stackoverflow.com/questions/960807/hashmapkey-string-value-arraylist-returns-an-object-instead-of-arraylist

Link zu diesem Kommentar
Auf anderen Seiten teilen

Erfolgt beim Schreiben in ein Array nicht so eine Typkonvertierung? Ich lasse mir die Inhalte meiner Array immer über ganz billige for-Schleifen ausgeben, sodass ich wirklich jeden Wert erwische. Je nachdem, was du für eine Arraylist hast kannst du zB .toString() oder solche Methoden benutzen.

Aber warte mal, ist es überhaupt möglich eine Hashmap über ein String und eine Arraylist zu deklarieren? Es heißt ja: ein Wert -> eine Zuordnung.

Edit:

Habe hier noch etwas gefunden:

java - HashMap(key: String, value: ArrayList) returns an Object instead of ArrayList? - Stack Overflow

Ich erkenne leider nicht was dictCode sein soll... Ich blick gar nicht mehr durch. Ein Klassenkamerade sagt, dass das ganze wenig Sinn macht, weil ArrayList und HashMap sich ziemlich ähnlich sein sollen. Beide speichern mehrere Werte vom selben Typ...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also ich versuche es einmal zu erklären - und ich hoffe, ich habe es selber richtig kapiert :D :

Hashmap funktioniert so, dass du einem Schlüssel einen eindeutigen Wert zuordnest:

Key -> Value

Person 1 -> Peter

Person 2 -> Paul

Person 3 -> Maria

Was ich denke, was ich glaube, was du versuchst ist folgendes:

Key -> Value

Person 1 -> "Daniel", "Daniel@aol.de", "08315364", "Memminger Straße 100", "Kempten"

Person 2 -> "Andreas", "andy@gmx.de", "0833196870", "Hauptstraße 10a", "Memmingen"

Person 3 -> "Isabell", "isi_bell@web.de", "089775361", "Theresienstraße 5", "München"

oder anders geschrieben:

Key -> Value

Person 1 -> kontaktDaten(0) [hier steht der Daniel drin]

Person 2 -> kontaktDaten(1) [hier steht der Andreas drin]

Person 3 -> kontaktDaten(2) [und hier die Isabell]

Was ich nun herausgefunden habe, ist, dass du mit dieser Schleife deine drei Personen in deine Map schreiben kannst:


for (int i = 0; i < kontaktDaten.size(); i++) {

		kontaktListe.put("Person " + i, kontaktDaten.get(i));

	}

Das erkenne ich daran, dass danach die
System.out.println(kontaktListe.size());
3 Einträge ausspuckt. Außerdem kannst du nun sehen, dass deine drei Personen ordentlich abgespeichert wurden und dir mit
System.out.println(kontaktListe);

im Rohdatenformat oder sowas ekliges diese anzeigen lassen:

{Person 0=package.Person@72b0f2b2, Person 2=package.Person@3f0dbef1, Person 1=package.Person@1f72e08e}

Du siehst, du hast dort drei Keys (Person 0, Person 2 und Person 1) und ihnen ihre Einträge zugeordnet.

Sorry, ich habe nun einen Termin und kann dir daher nicht weiter helfen. Ich hoffe aber, dass du das jetzt allein schaffst und wünsch dir viel Erfolg bei deiner Aufgabe :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hab den Fehler gefunden. Ich habs nicht richtig gelesen.

Mein Tutor möchte von mir, dass ich drei Hashmaps mache und diese dann in eine ArrayList speicher.. :) aber trotzdem danke!

Oh zu spät gesehen, egal :D Dann ist es eben so, viel Spaß :D

Edit: stimmt, so rum wäre es auch einfacher finde ich... naja gut :D

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich hatte aber auch ne Lösung noch zu der anderen Aufgabenstellung (bzw. zur falschen Aufgabenstellung)..

In der Klasse Person hat sich nichts mehr geändert.


import java.util.*;


public class HashTest {



	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("");



	}


}

Ekelhaft, aber es funktioniert! :D

Link zu diesem Kommentar
Auf anderen Seiten teilen

Na, sei mal nicht so böse :D hauptsache es funktioniert :P

Und genau mit der Einstellung sitzt du irgendwann im Beruf nach 3 Wochen im Codereview, checkst deine Metriken und weinst dich nachts in den Schlaf, weil du die nächsten 2 Wochen mit Refaktorisierung und Dokumentation verbringst, damit deine Kollegen dir nicht den Kopf abreißen ;).

Link zu diesem Kommentar
Auf anderen Seiten teilen

Und genau mit der Einstellung sitzt du irgendwann im Beruf nach 3 Wochen im Codereview, checkst deine Metriken und weinst dich nachts in den Schlaf, weil du die nächsten 2 Wochen mit Refaktorisierung und Dokumentation verbringst, damit deine Kollegen dir nicht den Kopf abreißen ;).

Ja das wird selbstverständlich auch meine Einstellung bleiben:upps

Ich bin im 2. Lehrjahr und bin gerader mal ein paar Tage in dieser Abteilung, in der programmiert wird. Das was man in der Schule lernt, bringt ja sowieso fast nichts. UND es ist ja nicht mal das richtige Programm. Ich hab das, was eigentlich verlangt war, auch noch gemacht und das sieht okay aus. Dafür, dass ich eigentlich keine Ahnung vom programmieren habe find ich das echt ok!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja nein das sollte auch glaube ich keine Beleidigung oder sowas sein, sondern nur ein gut gemeinter Rat. Jeder Coder entwickelt im Laufe seiner Laufbahn seinen eigenen Stil. Bin auch erst im zweiten Lehrjahr und fange später auch hier bei den Programmierern an und war auch schon länger und öfter in der Abteilung, sodass mir durchaus die Grundstilistiken bekannt sind. Lass dich davon nicht unterkriegen, wenn andere hier Power-Codes schreiben, die voll abgespaced aussehen :D wenn du sagst, dass du erst seit ein paar Tagen in der Programmierung sitzt und es vielleicht auch nicht deine Fachrichtung ist (?) und von dir behauptest, dass du eigentlich keine Ahnung davon hast: dein Programm läuft doch, also :D jeder fängt mal klein an :)

Edit: wichtig ist mir zB nur, dass man wissbegierig und neugierig bleibt und nach wie vor offen für alles ist (fachlich gesehen).

Bearbeitet von p_krger
Nachtrag
Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich gebe dir nur den Rat, so früh wie möglich darauf zu achten, sauberen Code zu produzieren. Ich habe selbst in einer 8-Mann-Firma mit fragwürdiger Ethik in puncto Clean Coding meine Ausbildung absolviert und kämpfe heute damit, gewisse Marotten und Gewohnheiten wieder raus zu bekommen. Glaub mir, das ist kein Spaß. Investier die Zeit lieber direkt und so früh wie irgend möglich.

Entwickler sind faul und suchen den Weg des geringsten Widerstands, aber wenn es auf Kosten des Les- und Wartbarkeit geht, ist Schluss mit lustig.

Das war weniger als Anpöbeln, sondern eher als Rat gemeint. Mit ein bisschen "Zwischen den Zeilen lesen" und Beachtung des ";)" hätte man die Intention ggfs. auch erkannt.

Gruß, Goulasz

P.S.: Java ist blöd, komm zu .NET, wir haben Kekse.^^

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dann hab ich das wohl falsch verstanden. Verzeiht mir. Ich bin eine Frau, ich interpretiere gerne :D xD

Ja ich werde mir in Zukunft viel Mühe geben. Ich denke mein 'richtiges' Programm sieht auch viel besser aus :D Werde es posten sobald ich fertig bin und das Netzwerk auf der Arbeit nicht mehr so rum spinnt :P

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Wochen später...

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...