Hallo,
ich habe ein Problem und schon gegoogelt und bei sun.com in der doku gelesen, aber finde gerade keine Lösung dafür, also hier mal die Frage:
Das ganze funktioniert soweit, dass alle Einträge ausgegeben werden und bei gleichem Key das neue Objekt nicht in die Hashmap geschrieben wird. Aber wenn ich ein Objekt mit den gleichen Daten(Value) erzeuge, wird es trotz der containsValue() Abfrage in die Hashmap geschrieben. In der vorliegenden Version habe ich noch die ID in der Klasse Spieler drin stehen, aber ich habe es bereits ohne diese Variable getestet und trotzdem geht es nicht.
Muss ich die containsValue() Methode irgendwie überlagern, damit die Values bekannt sind ?
ich habe ein Problem und schon gegoogelt und bei sun.com in der doku gelesen, aber finde gerade keine Lösung dafür, also hier mal die Frage:
Code:
Map<String,Spieler> Spielerliste = new HashMap<String,Spieler>();
public String Spielerregistrieren(String Vorname,String Nachname,String Kontaktdaten)
{
Spieler neuerSpieler= new Spieler(Vorname, Nachname, Kontaktdaten);
SpielerID = neuerSpieler.getSpieler_ID();
if((Spielerliste.containsKey(SpielerID))||(Spielerliste.containsValue(neuerSpieler))){
// abbruch der Erstellung des Spielers
return "Spieler bereits vorhanden oder ID bereitsvergeben!";
}
else{
Spielerliste.put(SpielerID,neuerSpieler);
// Spieler wurde zur Liste hinzugefügt!
return "Spieler wurde erfolgreich registriert mit ID:"+SpielerID+"!";
}}
Code:
public class Spieler {
String Vorname,Nachname,Kontaktdaten;//Kontaktdaten: Telefon,Adresse,Email
static int Spieler_counter;
// dient dazu die ID nach Anzahl der spieler festzulegen wird beim erstellen jedes Spielers erhöht.
/**
* @param vorname
* @param nachname
* @param spieler_ID
*/
public Spieler(String vorname, String nachname, String kontaktdaten) {
//vorher prüfen ob Spieler in der Liste vorhanden ist.
super(); // Ka warum der beim automatischen erstellen eines Konstruktors hiern super() schreibt
Vorname = vorname;
Nachname = nachname;
Kontaktdaten = kontaktdaten;
this.Spieler_increase();
}
Muss ich die containsValue() Methode irgendwie überlagern, damit die Values bekannt sind ?