Як створити словник на Java? [зачинено]


236

Я намагаюся реалізувати словник (як у фізичній книзі). У мене є список слів та їх значення.

Яку структуру / тип даних надає Java для зберігання списку слів та їх значень як пар ключів / значень.

Як, даючи ключ, я можу знайти та повернути значення?


24
Ну, в дусі зосередження на питанні, а не на користувачі, я голосую за повторне відкриття. Я впевнений, що цей користувач все-таки закінчив курс. ;) Це дублікат stackoverflow.com/questions/1540673/… , але я думаю, що відповіді тут кращі.
Аді Інбар

Відповіді:


313

Ви захочете Map<String, String>. Класи, що реалізують Mapінтерфейс, включають (але не обмежуються ними):

Кожен розроблений / оптимізований для певних ситуацій (для отримання додаткової інформації перейдіть до відповідних документів). HashMapмабуть, найпоширеніший; за замовчуванням.

Наприклад (за допомогою a HashMap):

Map<String, String> map = new HashMap<String, String>();
map.put("dog", "type of animal");
System.out.println(map.get("dog"));
тип тварини

1
@Cruncher Він також реалізовує Map(перевірити javadoc)
Аршаджі

1
@arshajii У мене є сумніви, що ми вручну відображаємо всі рядки у словнику, або я можу сказати, що ми зберігаємо значення всіх слів вручну. Отже, моє запитання, чи є як-небудь db (dump) файли словника для отримання слів та їх значення / визначення, щоб ми могли уникати додавання значення кожного слова вручну
Vighanesh Gursale

@VighaneshGursale Вам потрібно буде використовувати метод put для створення вашої структури даних під час виконання. Подумайте про команду put як за зчитування файлу з диска та розміщення його в пам'яті (ram), щоб ви могли працювати з ним. Якщо у вас є файл, який ви хочете завантажити як структуру даних при автоматичному завантаженні, вам слід заглянути в java spring, але його складний.
Dan Ciborowski - MSFT

5
До речі, вам насправді не потрібно включати <String, String> вдруге. Можна просто зробитиMap<String, String> map = new HashMap<>();
Семюель Нойєс

Ви забули згадати ConcurrentHashMap, який краще використовувати над Hashtable
Арсенієм

80

Це створює словник тексту (рядка):

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

потім ви використовуєте його як:

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

Працює, але дає помилку, вам потрібно зберегти клас конструктора таким же, як клас декларації. Я знаю, що він успадковується від батьківського класу, але, на жаль, він дає помилку під час виконання.

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

Це працює належним чином.


3
dictionary["key"]не буде працювати - так і має бути dictionary.get("key").
Аршаджі

21
Правда, напевно, якийсь C # проскочив :)
SmartK8

12

Використовуйте інтерфейс Map та таку програму, як HashMap


1
Посилання на рішення вітається, але, будь ласка, переконайтеся, що ваша відповідь корисна без неї: додайте контекст навколо посилання, щоб ваші колеги користувачі мали уявлення про те, що це таке і чому воно є, а потім наведіть найбільш релевантну частину сторінки, яку ви " повторне посилання на випадок, якщо цільова сторінка недоступна. Відповіді, які є трохи більше ніж посилання, можуть бути видалені.
FelixSFD

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.