如何将此Java代码转换为Lambda和Stream实现?

猫王:

我有一个实现可以在中找到重复的字符String

Map<Character, Integer> charMap = new HashMap<>();
for (int i = 0; i < word.length(); i++) {
    Character ch = word.charAt(i);
    if (charMap.containsKey(ch)) {
        charMap.put(ch, charMap.get(ch) + 1);
    } else {
        charMap.put(ch, 1);
    }
}

我想知道是否可以将此实现转换为Java 8and Stream实现。做这样的事情:

Map<Character, Integer> charMap = new HashMap<>();

然后转换String wordList字符:

List<Character> chars = word.chars()
        .mapToObj(i -> (char) i)
        .collect(Collectors.toList());

现在要做这样的事情:

chars.stream()
        .filter(e -> charMap.containsKey(e))...
sc0der:

您可以使用此:

        Map<Character, Integer> charMap = new HashMap<>();
        String word = "acbczabcd";
        word.chars().forEach(ch -> charMap.put((char) ch, charMap.getOrDefault((char) ch, 0) + 1));

,带有 mapToObj

word.chars().mapToObj(n -> (char) n).forEach(ch -> charMap.put(ch, charMap.getOrDefault(ch, 0) + 1));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章