Лямбда-выражение - список для сопоставления

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

Например:

List<String> result = new ArrayList<String>();
result.add("hello");
result.add("Java");

Притворный результат:

Map<Integer, String> mapOfList;
map(1, "Hello");
map(2, "Java");

Пытаться:

AtomicInteger atomic=new AtomicInteger(0);
mapOfList=result.stream().collect(atomic.incrementAndGet(), s -> s);
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
45
1

Ответы 1

Попробуй это

result.stream()
    .collect(Collectors.toMap(element -> atomic.incrementAndGet(), Function.identity());

Функции, как правило, не должны иметь состояния, хотя в документации об этом явно не говорится. atomic здесь фактически является состоянием функции keyMapper. Если вы измените его на параллельный поток, это испортит идентификаторы.

Jaroslaw Pawlak 13.09.2018 18:53

Другие вопросы по теме