В вашем коде есть две ошибки:
Вы используете Map<Integer, Integer>
вместо Map<String, Integer>
.
toMap()
требует двух функций в качестве параметра, но вы передаете значение (atomicInteger.getAndIncrement()
) вместо функции (o -> atomicInteger.getAndIncrement()
).
Итак, полный пример будет выглядеть так:
AtomicInteger atomicInteger = new AtomicInteger();
String[] a = {"\"a\"", "\"b\"", "\"c\""};
Map<String, Integer> map = Arrays.stream(a)
.map(s -> s.replaceAll("\"", "")) // I need to remove '"' from the string
.collect(Collectors.toMap(Function.identity(), o -> atomicInteger.getAndIncrement()));
Результат:
{a=0, b=1, c=2}
Кроме того, было бы гораздо лучше использовать IntStream
вместо AtomicInteger
:
String[] a = {"\"a\"", "\"b\"", "\"c\""};
Map<String, Integer> map = IntStream.range(0, a.length).boxed()
.collect(Collectors.toMap(i -> a[i].replaceAll("\"", ""), Function.identity()));