Как вы создаете словарь в Java? [закрыто]

236

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

Какую структуру / тип данных предоставляет Java для хранения списка слов и их значений в виде пар ключ / значение.

Как, учитывая ключ, я могу найти и вернуть значение?

user1849819
источник
24
Ну, в духе сосредоточения внимания на вопрос, а не на пользователя, я голосую, чтобы вновь открыть. Я уверен, что этот пользователь уже закончил курс в любом случае. ;) Это дубликат stackoverflow.com/questions/1540673/… , но я думаю, что ответы здесь лучше.
Ади Инбар

Ответы:

313

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

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

Например (используя HashMap):

Map<String, String> map = new HashMap<String, String>();
map.put("dog", "type of animal");
System.out.println(map.get("dog"));
тип животного
arshajii
источник
1
@Cruncher Это также реализует Map(проверьте
Javadoc
1
@arshajii У меня есть сомнения, мы вручную отображаем все строки в словаре, или я могу сказать, что мы вручную сохраняем значение всех слов. Поэтому у меня вопрос, есть ли способ, как файлы db (dump) словаря для выборки слов и их значения / определения, чтобы мы могли избежать добавления значения каждого слова вручную
Vighanesh Gursale
@VighaneshGursale Вам потребуется использовать метод put для построения структуры данных во время выполнения. Думайте о команде put как о считывании файла с диска и размещении его в памяти (ram), чтобы вы могли работать с ним. Если у вас есть файл, который вы хотите загрузить в виде структуры данных при автоматической загрузке, вам нужно взглянуть на Java-Spring, но он сложный.
Дэн Сиборовский - 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>();

Это работает правильно.

SmartK8
источник
3
dictionary["key"]не сработает - так и должно быть dictionary.get("key").
Аршаджи
21
Правда, наверняка какой-то C # проскочил :)
SmartK8
12

Используйте интерфейс Map и такую ​​реализацию, как HashMap

Puyover
источник
1
Ссылка на решение приветствуется, но, пожалуйста, убедитесь, что ваш ответ полезен без нее: добавьте контекст вокруг ссылки, чтобы ваши коллеги-пользователи имели представление о том, что это такое и почему, а затем процитируйте наиболее релевантную часть страницы, которую вы ' Повторная ссылка на случай, если целевая страница недоступна. Ответы, которые немного больше, чем ссылка, могут быть удалены.
FelixSFD