преобразовать список объектов в карту java 8 поток - PullRequest
2 голосов
/ 15 апреля 2020

У меня есть pojo, как показано ниже

Class Employee () {
 Private name;
 Private id;
}

этот класс сотрудников используется для получения списка объектов (List) из mybatis orm.

mybatis возвращает вывод в виде List, поскольку mybatis не поддерживает Map как тип возвращаемого значения

Мне нужно преобразовать его в Map

Я пробовал ниже одного, но не сработало, так как он ожидает методы getName () и getId ()

Map<String, String> map = list.stream().collect(Collectors.toMap(Employee::getId, Employee:getName));

Пожалуйста, сообщите, есть ли способ достичь с потоком без изменения сотрудника pojo.

Примечание: я знаю, что мы можем добиться использования ofr или для каждого цикла.

Ответы [ 2 ]

1 голос
/ 15 апреля 2020

Вы должны всегда публиковать хорошо сформулированный вопрос, но поскольку вы новичок, давайте просто проигнорируем эту часть. Здесь я предполагаю, что оба name и ID имеют строковый тип.

Код ниже будет работать идеально для вас.

Map<String, String> map = list.stream().filter(Objects::nonNull).collect(Collectors.toMap(Employee::getId, Employee::getName));

Если вы также хотите сохранить порядок , go для нижеприведенного.

Map<String, String> map = list.stream().filter(Objects::nonNull).collect(Collectors.toMap(Employee::getId, Employee::getName, (oldValue, newValue) -> oldValue,LinkedHashMap::new));

, если этого не произойдет, будет замечательно, если вы добавите то, что error message вы получаете, поэтому сможет помочь вам в деталях.

0 голосов
/ 15 апреля 2020

должно быть

Map<Integer, String> result1=list.stream().collect(
                Collectors.toMap(Employee::getId, Employee::getName));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...