HashMap.containsKey () - как искать класс?

Здравствуйте
если вы выполните поиск в HashMap для определенного значения пары ключ-значение, вы можете написать следующее:

myHashMap.containsKey(myString);

Но как я могу управлять этим, если ключ не является строка? У меня есть класс, который выглядит так:

public class Kategorie implements Comparable {
    private String name;

    public Kategorie()  {
        super();
    }

    public Kategorie(String name)  {
        setName(name);
    }

    public String getName() {
        return name;
    }

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

    @Override
    public int compareTo(Object o) {
        if (!(o instanceof Kategorie))  
           throw new ClassCastException();

        Kategorie k = (Kategorie)o;
        String name = k.getName();
        return this.getName().compareTo(name);

    }
}

На карте я сохранил ключи и значения этого типа «Kategorie».

mapKategorieDEundEN.put(new Kategorie(strName_de), new Kategorie(strName_en));

Позже в коде я хочу проверить, есть ли ключ с определенной строкой.

if (mapKategorieDEundEN.containsKey(searchString))  {

... не работает, потому что ключ - это не строка, а "категория", это ясно.

Затем я попробовал что-то вроде этого:

if (mapKategorieDEundEN.containsKey(new Kategorie(searchString)))  {

... тоже не работает. Я предполагаю, что он ничего не находит, потому что это не «исходный» объект, а новый.

В этом случае могу я вообще использовать containsKey или мне нужно использовать цикл над HashMap?

5
задан Bevor 6 June 2011 в 07:57
поделиться