Вставка элементов в карту с использованием потоков - PullRequest
0 голосов
/ 21 мая 2018

У меня есть

List<String> lists;

Мне нужно перебрать этот список и вставить LinkedHashMap.Обычно я делаю это, как показано ниже:

Map<Integer,String> listMap=new LinkedHashMap<>();
for(int pos=0;pos<lists.size();pos++){
    listMap.put(pos,lists.get(pos));
}

Как я могу выполнить вышеуказанную операцию с потоками?

1 Ответ

0 голосов
/ 21 мая 2018

Используйте Collectors.toMap для Stream<Integer> индексов List:

Map<Integer,String> listMap =
   IntStream.range(0,lists.size())
            .boxed()
            .collect(Collectors.toMap(Function.identity(),
                                      lists::get,
                                      (a,b)->a,
                                      LinkedHashMap::new));

PS, выход Map равен Map<Integer,String>, что соответствует циклу for в вашемвопрос (в отличие от указанного Map<Integer,List<String>>, который не отвечает, если вы не измените ввод List с List<String> на List<List<String>>).

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