Почему этот оператор карты отформатирован с таким синтаксисом? - PullRequest
1 голос
/ 05 мая 2020

Я наткнулся на это утверждение, просматривая проект, и пытаюсь понять, как оно работает.

private Map<String, Map<String, List>> bank;

У меня есть некоторый опыт использования карт, но когда я посмотрел на эту строку, я немного запутался. Проект состоит из использования объектов перечисления.

Одним из примеров созданных объектов перечисления будет:

a2("Distinct", "adjective", "Familiar. Worked in Java.")

Другой пример:

a3("Distinct", "adjective", "Unique. No duplicates. Clearly different or of a different kind.")

Я знаю, как работает карта (пожалуйста, поправьте меня, если я ошибаюсь). Слово «Различный», в данном случае, отображается на часть речи (которая отображается в список, содержащий определения того же слова).

Главный вопрос, который у меня есть, - как это допустимый оператор, и почему синтаксис отличается от обычного создания карты, например:

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

Любая помощь была бы замечательной, большое вам спасибо.

1 Ответ

0 голосов
/ 05 мая 2020
Map<String, List<String>> map = new HashMap<>();

Это просто карта, которая связывает строку со списком строк. Например, key <-> value1, value2, value3

Чтобы добавить туда значение, просто используйте

map.computeIfAbsent("key", o->new ArrayList<>()).add("value1");
map.computeIfAbsent("key", o->new ArrayList<>()).add("value2");
map.computeIfAbsent("key", o->new ArrayList<>()).add("value3");

Если вы хотите связать 3 строки, например "Distinct", "adjective", "Familiar. Worked in Java.", подумайте об использовании map of maps:

Map<String, Map<String, List<String?>> map = new HashMap<>();

Чтобы поместить туда значение, используйте следующую конструкцию:

map.computeIfAbsent("Distinct", k->new HashMap<>()).computeIfAbsent("adjective", k->new ArrayList<>()).add("Familiar. Worked in Java.")
map.computeIfAbsent("Distinct", k->new HashMap<>()).computeIfAbsent("adjective", k->new ArrayList<>()).add("Unique. No duplicates. Clearly different or of a different kind.")

См. spe c и Практические инструкции Baeldung

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...