# java.util.Hashtable Problem mit get



## Pauer (25. Nov 2014)

Hallo zusammen,

ich mache gerade ein Fernstudium bei der SGD zum App Programmierer und habe ein Problem bei einer Hausaufgabe.
Die Aufgabenstellung ist in etwa: Erstellen sie ein Hashtable in welchen sie 6 Objekte der Klasse Kreis mappen und anschließend soll der x- und y- Wert des vierten Elements ausgegeben werden.
Ich habe nun eine solche erstellt. Das bei der put Methode anonyme Objekte verwendet werden ist ebenfalls in der Aufgabenstellung vorgegeben.
Leider bekomme ich eine Fehlermeldung bei der get Methode und verstehe nicht, woran das liegt.

Zunächst der Code:

```
public class HashDatenstruktur extends java.util.Hashtable
{
	public static void main (String[] args)
	{
		java.util.Hashtable kreistable = new java.util.Hashtable();
		
		int i=0;
		kreistable.put(new Integer(i++), new Kreis(100, 100, 50));
		kreistable.put(new Integer(i++), new Kreis(200, 100, 25));
		kreistable.put(new Integer(i++), new Kreis(300, 200, 100));
		kreistable.put(new Integer(i++), new Kreis(150, 50, 75));
		kreistable.put(new Integer(i++), new Kreis(280, 340, 80));
		kreistable.put(new Integer(i++), new Kreis(450, 30, 45));
		
		Kreis viertesElement = (Kreis)kreistable.get(3);
		System.out.println("Das vierte Elemet des Hashtables hat den die "
						+"Mittelpunktwerte:"
						+"\nx: "+viertesElement.getX()+"\ty: "+viertesElement.getY());
		
	}
}
```

Die Fehlermeldung im CMD ist:
cannot resolve symbol
symbol: method get (int)
location: class java.util.Hashtable Kreis viertesElement = (Kreis)kreistable.get(3)

wobei unter dem dot Operator das Problem angezeigt wird.

Mir ist nicht klar, wo das Problem liegt.
Vielen Dank für die Hilfe.

Gruß
Patrick


----------



## Flown (25. Nov 2014)

Also bei mir funktioniert das ganze ohne Probleme, außer dass du keine Generics sondern Rawtypes nimmst!

So sollte es eigentlich sein (Achja von Hashtable sollte man nicht ableiten, außer man verändert das Verhalten!!!!):


```
public static void main(String[] args) {
  java.util.Hashtable<Integer, Kreis> kreistable = new java.util.Hashtable<Integer, Kreis>();
  
  int i = 0;
  kreistable.put(i++, new Kreis(100, 100, 50));
  kreistable.put(i++, new Kreis(200, 100, 25));
  kreistable.put(i++, new Kreis(300, 200, 100));
  kreistable.put(i++, new Kreis(150, 50, 75));
  kreistable.put(i++, new Kreis(280, 340, 80));
  kreistable.put(i++, new Kreis(450, 30, 45));
  
  Kreis viertesElement = (Kreis) kreistable.get(3);
  System.out.println("Das vierte Elemet des Hashtables hat den die " + "Mittelpunktwerte:" + "\nx: " + viertesElement.getX() + "\ty: "
      + viertesElement.getY());
  
}
```


----------



## Pauer (25. Nov 2014)

Auf jeden Fall vielen Dank für die Antwort...
Nach Rücksprache mit meinem Tutor ist wohl meine java Version zu alt, auch wenn wir diese momentan verwenden sollen.
Dem Tutor ist wohl auch das extends java.util.Hashtable nicht recht. Dieses habe ich aber eingefügt, da ich dachte, wenn diese Klasse nicht beerbt wird, die Methoden put und get nicht bekannt sind!?
Liege ich da falsch? Oder sind die Methoden grundsätzlich bekannt bzw. java Schlüsselwörter?
Irgendwie stehe ich da ein bisschen auf dem Schlauch...

Vielen Dank für die Hilfe...
Gruß
Patrick


----------



## Flown (25. Nov 2014)

put und get sind public Methoden die Sichtbar sind für alle.

Ich würde dir raten nochmal von ganz vorne anzufangen(Grundlagen - Stichwort: Sichtbarkeit, usw.) und brav mitlernen!


----------

