# Probleme beim Füllen einer HashMap



## SAMSON (17. Jul 2004)

Hey,

brauch bitte Hilfe!

Ich soll in eine HashMap ein zuvor erzeugtes Object (Student) einfügen.

Dankbar für jede Hilfe!


```
import java.util.*;

public class hashing {




	public static void main (String [] args){
		
		student s1 = new student (1234, "Becker", "Boris", "Florida");
		student s2 = new student (3425, "Garrison", "Peter", "Ohio");
		student s3 = new student (2567, "Granaten", "Gert", "Emsland");
		student s4 = new student (5675, "Schlangen", "Sina", "Emsland");
		student s5 = new student (7896, "Young", "Angus", "Quebec");
		student s6 = new student (6532, "The Kid", "Billy", "Wüste");
		student s7 = new student (7643, "Berentzen", "Klara", "Emsland");
		student s8 = new student (9999, "Heydt", "Marie", "Emsland");
		student s9 = new student (9123, "Jones", "Indiana", "Überall");
		student s10 = new student (4567, "Bux", "Grete", "Emsland");
	
		HashMap h = new HashMap();
 	
	    h.put(new Integer (s1.getMnr()), s1);
	    h.put(new Integer (s2.getMnr()), s2);
	    h.put(new Integer (s3.getMnr()), s3);
	    h.put(new Integer (s4.getMnr()), s4);
	    h.put(new Integer (s5.getMnr()), s5);
	    h.put(new Integer (s6.getMnr()), s6);
	    h.put(new Integer (s7.getMnr()), s7);
	    h.put(new Integer (s8.getMnr()), s8);
	    h.put(new Integer (s9.getMnr()), s9);
	    h.put(new Integer (s10.getMnr()), s10);
    	
    	// Einen Studenten nach Matrikelnr. suchen
    	
    		
		Iterator it =  h.entrySet().iterator();
		while (it.hasNext()) {
			Map.Entry entry = (Map.Entry)it.next();
			//System.out.println( (String) entry.getKey() + " --> " + (String)entry.getValue() );
			
			 
			
			System.out.println();
			
			
    		//System.out.println( h ); 

			
		}
		System.out.println( h.get( "student 1234" ));
	}
}
```

Thanx

SAMSON


----------



## Beni (17. Jul 2004)

SAMSON hat gesagt.:
			
		

> Ich soll in eine HashMap ein zuvor erzeugtes Object (Student) einfügen.






			
				SAMSON hat gesagt.:
			
		

> ```
> student s1 = new student (1234, "Becker", "Boris", "Florida");
> 
> h.put(new Integer (s1.getMnr()), s1);
> ```



Ja, mit diesem Code macht man das...

... und wo ist jetzt das Problem??? Gibt es Fehlermeldungen? Sind die Objekte weg?

[Edit:

Wenn es um das Suchen geht: du hast Integer als Schlüssel zum einfügen gewählt, also musst du auch Integer zum suchen verwenden:


```
// Das ist ein String, und kein Integer
System.out.println( h.get( "student 1234" ));
```

]


----------



## SAMSON (17. Jul 2004)

Hi Beni,

es geht um die Ausgabe, hast Du schon richtig erkannt!
Wie kann ich die realisieren?

PS: Stimmt die Eingabe in die HashMap? Bin mir nicht sicher, ob der alle Daten (Strings) übernimmt!

Thanx


----------



## Beni (17. Jul 2004)

Du übergibst im ein (Integer / Student) -Paar, und genau so musst du es auch wieder rausholen:

nicht so:

```
System.out.println( h.get( "student 1234" ));
```

Sondern so:

```
System.out.println( h.get( new Integer( 1234 ) ));
```


----------



## SAMSON (17. Jul 2004)

Super,

war einfach nur Unwissenheit meinerseits  :lol: 

Nun hab ich nach ein Prob entdeckt!

Das Füllen scheint so nicht zu klappen:

Ausgabe ist: *student@16f0472*

Hast Du da noch nen Tip?

Meine Aufgabe lautet eigentlich: 
Implementieren Sie ein Klasse Student mit „den übliche“ Attributen (Name,
Vorname, Matrikelnummer, Adresse,…). Realisieren Sie eine Hashmap, die als Key die
Matrikelnummer des Studierenden benutzt und das unter diesem Eintrag gespeicherte Objekt
zurückgibt. Realisieren Sie eine Methode, die alle Elemente der HashMap ausgibt. Welche
Möglichkeiten gibt es hierfür? Sie sollen die in Java existierenden Bibliotheken des JDK
nutzen.

Hab Klasse Student mit gettern und settern und konstruktoren, aber irgendwie gehts net?!





```
import java.util.*;

public class hashing extends student {




	public static void main (String [] args){
		
		student s1 = new student (1234, "Becker", "Boris", "Florida");
		student s2 = new student (3425, "Garrison", "Peter", "Ohio");
		student s3 = new student (2567, "Granaten", "Gert", "Emsland");
		student s4 = new student (5675, "Schlangen", "Sina", "Emsland");
		student s5 = new student (7896, "Young", "Angus", "Quebec");
		student s6 = new student (6532, "The Kid", "Billy", "Wüste");
		student s7 = new student (7643, "Berentzen", "Klara", "Emsland");
		student s8 = new student (9999, "Heydt", "Marie", "Emsland");
		student s9 = new student (9123, "Jones", "Indiana", "Überall");
		student s10 = new student (4567, "Bux", "Grete", "Emsland");
	
		HashMap h = new HashMap();
 	
	    h.put(new Integer (s1.getMnr()), s1);
	    h.put(new Integer (s2.getMnr()), s2);
	    h.put(new Integer (s3.getMnr()), s3);
	    h.put(new Integer (s4.getMnr()), s4);
	    h.put(new Integer (s5.getMnr()), s5);
	    h.put(new Integer (s6.getMnr()), s6);
	    h.put(new Integer (s7.getMnr()), s7);
	    h.put(new Integer (s8.getMnr()), s8);
	    h.put(new Integer (s9.getMnr()), s9);
	    h.put(new Integer (s10.getMnr()), s10);
    	
    	// Einen Studenten nach Matrikelnr. suchen
    	
    		
		Iterator it =  h.entrySet().iterator();
		while (it.hasNext()) {
			Map.Entry entry = (Map.Entry)it.next();
			//System.out.println( (String) entry.getKey() + " --> " + (String)entry.getValue() );
			
			 
			
			System.out.println();
			
			
    		//System.out.println( h ); 

			
		}
	
		System.out.println( h.get( new Integer( 1234 ) ));
	}
}
```

und hier die student.java


```
public class student {
	
	private int m_mnr;
	private String m_name;
	private String m_surname;
	private String m_adress;
	
	public student(){					//Konstruktor ohne Parameter
		super();
		m_mnr = 0;
		m_name = "";
		m_surname = "";
		m_adress = "";
	}
	
	public student(int nr, String sn, String n, String ad) {
		
		m_mnr = nr;
		m_name = n;
		m_surname = sn;
		m_adress = ad;
				
	}	
	
	public int getMnr() {
		return m_mnr;
	}
	
	public String getName() {
		return m_name;
	}
		
	public String getSurname() {
		return m_surname;
	}
	
	public String getAdress() {
		return m_adress;
	}
	
	public void setMnr(int n) {
		m_mnr = n;
	}
	
	public void setName(String n) {
		m_name = n;
	}
		
	public void Surname(String n) {
		m_surname = n;
	}
	
	public void setAdress(String n) {
		m_adress = n;
	}
	
	public void getInfo() {
		
		System.out.println("Name   : "+m_name);
		System.out.println("Vorname: "+m_surname);
		System.out.println("Mat.Nr.: "+m_mnr);
		System.out.println("Adresse: "+m_adress);
	}

}
```

Thanx


----------



## Isaac (17. Jul 2004)

Was erwartest du denn hehe

Du sagst, System out das Objekt und das macht er. Wenn duwillst das er die Daten rausschreibst must du schon sagen

System out Objekt.getName
System out Objekt.getXXX

etc.

oder direkt System.out.println(DeinStudentObjekt.getInfo())


----------



## Guest (17. Jul 2004)

Mein Problem ist jetzt "Ich weiß nich, wie ich die Daten wieder aus der HashMap ausgeben soll"!

bekomme halt nur dieses student@16f0472 raus!

Thanx


----------



## SAMSON (17. Jul 2004)

Wie bekomme ich das hin, das ich die Daten (sollte so zur 1234 aussehen: "Becker", "Boris", "Florida")wieder aus der HashMap ausgeben soll"! 

bekomme halt nur dieses student@16f0472 raus! 


Thanx

SAMSON


----------



## Beni (17. Jul 2004)

Du musst noch einen Cast machen:

```
Object value = h.get( new Integer( 1234 ) ); // Das Objekt holen, welches ein Student darstellt.

Student student = (Student)value; // einen Cast machen um die Methoden von "Student" zu nutzen.

System.out.println( student.getName() ); // Daten ausgeben.
```


----------



## Isaac (17. Jul 2004)

Das hab ich doch oben schon gesagt.

statt


```
System.out.println( h.get( new Integer( 1234 ) ));
```

Machst du


```
Student std = (Student)h.get( new Integer( 1234 );
std.getInfo();
```


----------



## SAMSON (17. Jul 2004)

Beni, Du bist der Java Gott!

Euer Forum ist nur zu empfehlen! Top schnelle Antworten!

Tausend Dank!

SAMSON


----------



## SAMSON (17. Jul 2004)

Hey Leute,

hab noch ein prob. Schaffe es nicht, die gesamte HashMap auszugeben!

Kann jemand helfen?

Danke im Voraus


SAMSON


----------



## Isaac (17. Jul 2004)

Als Anhaltpunkt, den Sprung auf dein Programm schafst du sicher alleine


```
public void test()
    {
        HashMap h   = new HashMap();
        Iterator it = h.values().iterator();
        while(it.hasNext())
        {
            System.out.println(it.next());
        }
    }
```


----------



## SAMSON (17. Jul 2004)

Wo soll das denn hin? 
Ich bin noch blutjunger Anfänger!
Gib mir mal bitte nen "Wink mit dem ganzen Zaun!"


Thanx

So siehts aus:

```
import java.util.HashMap;
import java.util.Iterator;
import java.util.Enumeration;

public class hashMap extends studierende {

	public static void main (String [] args){
		
		
// ---------- Objekte von student erzeugen ----------

		
		studierende studies1 = new studierende (9801, "Kretschmann", 	"Stefan", 		"Promenade 6 - 38855 Wernigerode");
		studierende studies2 = new studierende (9396, "Bruechert", 		"Sebastian",	"Muehlental 23 - 38855 Wernigerode");
		studierende studies3 = new studierende (9999, "Mueller", 		"Bernd", 		"Mauergasse 2 -	38855 Wernigerode");


// ---------- HashMap erzeugen und füllen ----------
	
		HashMap newMap = new HashMap();
 	
	    newMap.put(new Integer (studies1.getMatrNr()), studies1 );
	    newMap.put(new Integer (studies2.getMatrNr()), studies2 );
	    newMap.put(new Integer (studies3.getMatrNr()), studies3 );
    		
		Iterator it 	= newMap.keySet().iterator();
		
		while (it.hasNext()) {
			Integer key = (Integer)it.next();
		}
							


// ---------- Datensatz mit Key holen ----------		
		
		
		Object value = newMap.get( new Integer( 9801 ) ); 


// ---------- Cast ----------		
		
		
		studierende studies = (studierende)value; 


// ---------- Ausgeben des Datensatzes zu Key ----------

		
		System.out.println("Datensatz zur Matrikelnummer: "+studies.getMatrNr()+"\n"	);
		System.out.println("Vorname	:	"+ studies.getVorname() 						); 
		System.out.println("Name	:	"+ studies.getNachname()						);
		System.out.println("Adresse	:	"+ studies.getAdresse()							);
		System.out.println("Mat-Nr.	:	"+ studies.getMatrNr()					+"\n"	);
}
	
}
```


----------



## Isaac (17. Jul 2004)

Sorry, ich mach nicht deine Hausaufgaben, ein bischen API lesen und den Code den ich schon gepostet habe und das ist ein klacks für dich.


----------



## SAMSON (17. Jul 2004)

Isaac hat gesagt.:
			
		

> Sorry, ich mach nicht deine Hausaufgaben, ein bischen API lesen und den Code den ich schon gepostet habe und das ist ein klacks für dich.



Ich werds weiter versuchen!

Thanx


----------

