Java'da nasıl sözlük oluşturursunuz? [kapalı]


236

Bir sözlük (fiziksel kitapta olduğu gibi) uygulamaya çalışıyorum. Kelimelerin bir listesi ve anlamları var.

Java, bir kelime listesini ve anlamlarını anahtar / değer çiftleri olarak saklamak için hangi veri yapısını / türünü sağlar?

Bir anahtar verildiğinde değeri nasıl bulabilir ve geri verebilirim?


24
Kullanıcıya değil, soruya odaklanma ruhu içinde yeniden açmak için oy kullanıyorum. Eminim bu kullanıcı kursu şimdiye kadar bitirdi. ;) Bu stackoverflow.com/questions/1540673/… bir kopyasıdır , ancak burada cevapların daha iyi olduğunu düşünüyorum.
Adi Inbar

Yanıtlar:


313

Bir isteyeceksiniz Map<String, String>. MapArabirimi uygulayan sınıflar aşağıdakileri içerir (ancak bunlarla sınırlı değildir):

Her biri belirli durumlar için tasarlanmış / optimize edilmiştir (daha fazla bilgi için ilgili belgelerine gidin). HashMapmuhtemelen en yaygın olanıdır; varsayılana git.

Örneğin (a kullanarak HashMap):

Map<String, String> map = new HashMap<String, String>();
map.put("dog", "type of animal");
System.out.println(map.get("dog"));
hayvan türü

1
@Cruncher Ayrıca uygular Map( javadoc'u kontrol edin)
arshajii

1
@arshajii manuel olarak sözlükteki tüm dizeleri haritaladığımızdan şüpheliyim ya da tüm kelimelerin anlamlarını elle sakladığımızı söyleyebilirim. Sorum şu Demek ki elle her kelimenin anlamını eklemekten kaçının böylece kelimeleri ve anlamları / tanımını getirmesi Sözlük ait db (döküm) dosyaları gibi herhangi bir yolu yoktur
Vighanesh Gursale

@VighaneshGursale Exeuction sırasında veri yapınızı oluşturmak için bir put yöntemi kullanmanız gerekecektir. Bir put komutunu dosyayı diskten okumak ve onunla çalışabilmek için belleğe (ram) yerleştirmek olarak düşünün. Eğer yük otomatik olarak bir veri yapısı olarak yüklenmesini istediğiniz bir dosya varsa, java bahar ama karmaşık bakmak gerekir.
Dan Ciborowski - MSFT

5
Bu arada, ikinci kez <String, String> eklemeniz gerekmez. YapabilirsinizMap<String, String> map = new HashMap<>();
Samuel Noyes

Hashtable
Arsenius

80

Bu, metin (string) sözlüğü oluşturur:

Map<String, String> dictionary = new HashMap<String, String>();

daha sonra şu şekilde kullanırsınız:

dictionary.put("key", "value");
String value = dictionary.get("key");

Çalışır, ancak yapıcı sınıfını declaration sınıfıyla aynı tutmanız gereken bir hata verir. Üst sınıftan miras aldığını biliyorum, ama maalesef çalışma zamanında bir hata veriyor.

Map<String, String> dictionary = new Map<String, String>();

Bu düzgün çalışıyor.


3
dictionary["key"]işe yaramaz - olması gerekir dictionary.get("key").
arshajii

21
Doğru, muhtemelen bazı C # kaymış :)
SmartK8

12

Harita arayüzünü ve HashMap gibi bir uygulamayı kullanın


1
Bir çözümün bağlantısı hoş karşılanır, ancak lütfen cevabınızın onsuz faydalı olduğundan emin olun: bağlantınızın çevresine bağlam ekleyin, böylece diğer kullanıcılarınız ne olduğu ve neden orada olduğu hakkında bir fikir sahibi olacak, ardından sayfanın en alakalı bölümünü alıntılayacağız ' hedef sayfanın kullanılamaması durumunda bağlantı kuruluyor. Bir bağlantıdan biraz daha fazlası olan yanıtlar silinebilir.
FelixSFD

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.