Преобразовать список <String>в картусо значением списка в качестве ключа карты и значением карты с пустым списком Java 8 - PullRequest
0 голосов
/ 17 июня 2019

Это может быть глупый вопрос.Мне нужно преобразовать List<String> в Map<String, List<String>> с Java 8. Все значения списка ("20", "42", "55") должны быть ключом к созданию карты, в то время как атрибут значения создаваемой карты должен быть пустым списком.

Хотя следующий код выполняет задачу, он сохраняет значение списка как ключ карты и как первый индекс значения карты.

Как решить эту проблему с помощью функций Java 8 ??

List<String> list = Arrays.asList("20", "42", "55");

Map<String, List<String>> serviceMap =
            list.stream().collect(Collectors.toMap(Function.identity(), Arrays::asList));

Ответы [ 2 ]

1 голос
/ 17 июня 2019

Передача Arrays::asList в качестве преобразователя значения означает, что значением каждого ключа будет List, которое содержит этот ключ в качестве отдельного элемента, но вы сказали, что хотите, чтобы значение было пустым List.

Если значение должно быть изменяемым пустым List, вы должны создать новый ArrayList в качестве значения Map:

List<String> list = Arrays.asList("20", "42", "55");

Map<String, List<String>> serviceMap =
            list.stream()
                .collect(Collectors.toMap(Function.identity(), a -> new ArrayList<>()));
0 голосов
/ 17 июня 2019

Просто переберите каждую строку в списке и добавьте ее в качестве ключа карты, добавив в качестве значения новый ArrayList, например:

Map<String, List<String> result = Arrays.asList("20", "42", "55").stream()
    .collect(Collectors.toMap(Function.identity(), a -> new ArrayList<String>()));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...