Java 8 toMap IllegalStateException Дублирующий ключ

У меня есть файл, который содержит данные в следующем формате

1
2
3

Я хочу загрузить это на карту как {(1->1), (2->1), (3->1)}

Это код Java 8,

Map<Integer, Integer> map1 = Files.lines(Paths.get(inputFile))
                .map(line -> line.trim())
                .map(Integer::valueOf)
                .collect(Collectors.toMap(x -> x, x -> 1));

Я получаю следующую ошибку

Exception in thread "main" java.lang.IllegalStateException: Duplicate key 1

Как исправить эту ошибку?

Ответы

Ответ 1

Код будет запущен, если в файле нет дубликатов.

Map<Integer, Integer> map1 = Files.lines(Paths.get(inputFile))
            .map(String::trim)
            .map(Integer::valueOf)
            .collect(Collectors.toMap(x -> x, x -> 1));

Если есть дубликаты, используйте следующий код, чтобы получить общее количество вхождений в файл для этого ключа.

Map<Integer, Long> map1 = Files.lines(Paths.get(inputFile))
            .map(String::trim)
            .map(Integer::valueOf)
            .collect(Collectors.groupingBy(x -> x, Collectors.counting());