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

Я хочу преобразовать список 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);
1
0
45
1

Ответы 1

Попробуй это

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

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

Jaroslaw Pawlak 13.09.2018 18:53

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