Slyh: Assoziatives Array in Java?

Beitrag lesen

Hallo Christian,

Korrekt waere in der Tat der Ausdruck 'Hashtable'. Und so
heisst auch die Java-Klasse: java.util.Hashtable. Muss man aber
mit aufpassen, die Methode 'exists' benutzt anscheinend kein
'equals', um das Vorhanden sein eines Keys zu pruefen, die
Methode 'get' allerdings schon.

Es gibt keine Methode "exists(...)" in der Klasse Hashtable. Meinst
du vielleicht "containsKey(...)"?
Wenn ja, ist deine Aussage nicht korrekt. Hier ein Auszug aus dem Source
von Hashtable:

public synchronized Object get(Object key) {
      Entry tab[] = table;
      int hash = key.hashCode();
      int index = (hash & 0x7FFFFFFF) % tab.length;
      for (Entry e = tab[index] ; e != null ; e = e.next) {
          if ((e.hash == hash) && e.key.equals(key)) {
              return e.value;
          }
      }
      return null;
    }

public synchronized boolean containsKey(Object key) {
      Entry tab[] = table;
      int hash = key.hashCode();
      int index = (hash & 0x7FFFFFFF) % tab.length;
      for (Entry e = tab[index] ; e != null ; e = e.next) {
          if ((e.hash == hash) && e.key.equals(key)) {
              return true;
          }
      }
      return false;
  }

Wie du siehst, ist der Code bis auf den Rückgabewert identisch.
(Was im übrigen ausgesprochen schlechter Programmierstil ist! Aber
darum ging's hier ja nicht...)

Gruß
Slyh

--
Es gibt nur 10 Arten von Menschen. Solche, die das Binärsystem verstehen, und solche, die es nicht verstehen.