使用流填充Java Map,该Java Map映射与其字母位置对应的字母表

san*_*ank 3 java java-8 java-stream

我正在填充一个Map<Character, Integer> alphabetToNumber映射与其字母位置对应的字母

char [] alphabetArray = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
Map<Character, Integer> alphabetToNumber = new HashMap<>();
int counter = 1;
for(Character letter : alphabetArray) {
    alphabetToNumber.put(letter, counter);
    counter++;
}
Run Code Online (Sandbox Code Playgroud)

上面的代码有效,但我想知道是否可以使用Java 8流完成.谢谢.

Eug*_*ene 6

Map<Character, Integer> result = IntStream.rangeClosed('A', 'Z')
            .boxed()
            .collect(Collectors.toMap(
                    x -> (char) x.intValue(),
                    x -> x + (1 - 'A')));
Run Code Online (Sandbox Code Playgroud)

甚至更好的拳击/解拳太多:

Map<Character, Integer> result = IntStream.rangeClosed('A', 'Z')
    .collect(
        HashMap::new,
        (map, c) -> map.put((char) c, c + (1 - 'A')),
        HashMap::putAll
    );
Run Code Online (Sandbox Code Playgroud)

  • (64为'A' - 1) (2认同)