Bagaimana Anda membuat kamus di Jawa? [Tutup]

236

Saya mencoba menerapkan kamus (seperti dalam buku fisik). Saya punya daftar kata dan artinya.

Struktur / tipe data apa yang disediakan Java untuk menyimpan daftar kata dan artinya sebagai pasangan kunci / nilai.

Bagaimana, diberi kunci, dapatkah saya menemukan dan mengembalikan nilainya?

pengguna1849819
sumber
24
Ya, dengan semangat fokus pada pertanyaan, bukan pengguna, saya memilih untuk membuka kembali. Saya yakin pengguna ini telah menyelesaikan kursus sekarang. ;) Ini adalah duplikat dari stackoverflow.com/questions/1540673/… , tapi saya pikir jawabannya di sini lebih baik.
Adi Inbar

Jawaban:

313

Anda akan menginginkan Map<String, String>. Kelas-kelas yang mengimplementasikan Mapantarmuka meliputi (tetapi tidak terbatas pada):

Masing-masing dirancang / dioptimalkan untuk situasi tertentu (buka dokumen masing-masing untuk info lebih lanjut). HashMapmungkin yang paling umum; masuk ke default.

Misalnya (menggunakan a HashMap):

Map<String, String> map = new HashMap<String, String>();
map.put("dog", "type of animal");
System.out.println(map.get("dog"));
jenis binatang
arshajii
sumber
1
@Cruncher Ini juga mengimplementasikan Map(periksa javadoc)
arshajii
1
@arshajii saya ragu kami secara manual memetakan semua string dalam kamus atau saya dapat mengatakan bahwa kami secara manual menyimpan arti dari semua kata. Jadi pertanyaan saya adalah, adakah cara seperti file kamus db (dump) untuk mengambil kata dan artinya / definisi sehingga kita dapat menghindari menambahkan arti setiap kata secara manual
Vighanesh Gursale
@ VighaneshGursale Anda akan perlu menggunakan metode put untuk membangun struktur data Anda selama exeuction. Pikirkan perintah put sebagai membaca file dari disk, dan menempatkannya dalam memori (ram) sehingga Anda dapat bekerja dengannya. Jika Anda memiliki file yang ingin Anda muat sebagai struktur data pada memuat otomatis Anda harus melihat ke java spring tetapi kompleks.
Dan Ciborowski - MSFT
5
Ngomong-ngomong, kamu sebenarnya tidak perlu memasukkan <String, String> yang kedua kalinya. Anda bisa melakukannyaMap<String, String> map = new HashMap<>();
Samuel Noyes
Anda lupa menyebutkan ConcurrentHashMap yang lebih disukai untuk digunakan daripada Hashtable
Arsenius
80

Ini menciptakan kamus teks (string):

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

Anda kemudian menggunakannya sebagai:

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

Berfungsi tetapi memberikan kesalahan yang Anda butuhkan untuk menjaga kelas konstruktor sama dengan kelas deklarasi. Saya tahu itu mewarisi dari kelas induk tetapi, sayangnya itu memberikan kesalahan saat runtime.

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

Ini berfungsi dengan baik.

SmartK8
sumber
3
dictionary["key"]tidak akan bekerja - seharusnya dictionary.get("key").
arshajii
21
Benar, mungkin beberapa C # masuk :)
SmartK8