2008-12-13 20 views

cevap

17

Map arayüzü iki anahtar null ise onlar kilit k öyle ki key.equals(k) var aksi takdirde tekrar eden belirtir, ardından iki kez mevcut. içerir Bkz veya buraya yöntemini olsun: Ancak

http://java.sun.com/javase/6/docs/api/java/util/Map.html#containsKey(java.lang.Object)

, nasıl o çeki gerçekleştirme hakkında gitmek Map uygulanması kalmış ve HashMap onunla kontrol edecek potansiyel anahtarları daraltmak için bir karma kodunu kullanacak equals yöntemi. Pratikte, tipik bir karma tabanlı harita için, kopyaları kontrol etmek için bir harita, (muhtemelen bir miktar mod), bazı kodları değiştirir ve aynı büyüklükte aynı büyüklükte aynı kodu veren herhangi bir tuşla karşılaştırmak için equals'u kullanır.

+0

Bundan daha iyi açıkladığınız için teşekkürler :) – kevindaub

0

Anahtardaki equals() yöntemini kullanır. HashCode() yöntemi, yalnızca harita için tuşların verimli bir şekilde saklanmasına yardımcı olur.

3

Soruyu yanlış okuyun, ancak yukarıdaki kişinin cevabı doğrudur ve bağlantım nasıl belirlendiğine ilişkin cevabı verir (eşittir yöntemi). Bağlantıdaki içeriklere bakın ve yöntemleri alın.

Bir harita nasıl eklenir: Bir Harita'da yinelenen anahtar olamaz. Yinelenen bir anahtar bulursanız eski değeri yeni değerle değiştirir. İşte Harita Arabirimi için bir link. Ayrıca, kotaya (K tuşu, V değeri) bakarsanız, haritanın nasıl çalıştığını da açıklar. Umarım yardımcı olur.

1

Standart Java kitaplıklarında sağlanan bir arabirim olan java.util.Map'a başvurduğunuzu farz ediyorum. Bir anahtarın çoğaltılıp çoğaltılmadığını belirleme yöntemi, özel uygulamaya kalmıştır. Bir java.util.HashMap, örneğin equals ve hashCode kullanır. Tamamen farklı bir şey kullanan Haritanın kendi uygulamanızı yazabilirsiniz.

0

Burada bir kenar muhafazasına dikkat edin. Boş anahtarlar her zaman çoğaltılmaz. Aslında, null anahtarlar, Map uygulamaları arasında çok fazla hayal kırıklığına neden olacak şekilde ortaya çıktı (Consistency numaralı telefondaki mesajıma bakın).

Örneğin, boş anahtarları HashMaps'te Tamam, ancak doğal sıralamayı kullanan bir TreeMap'ta veya boş anahtarların yasak olduğu ConccurentHashMap'de yoktur. Buradaki sorun, boş bir anahtar kullanırsanız ve refactoring sırasında uygulamaları değiştirdiğinizde korkunç çalışma zamanı hataları ortaya çıkarırsa, yöntemlerinin çoğuna yakalanmamış istisnalar atmalarıdır.

İlgili konular