【发布时间】:2019-10-25 07:30:39
【问题描述】:
public static int construction(String myString) {
Set<Character> set = new HashSet<>();
int count = myString.chars() // returns IntStream
.mapToObj(c -> (char)c) // Stream<Character> why is this required?
.mapToInt(c -> (set.add(c) == true ? 1 : 0)) // IntStream
.sum();
return count;
}
如果没有以下代码,上述代码将无法编译:
.mapObj(c -> (char)c)
// <Character> Stream<Character> java.util.stream.IntStream.mapToObj(IntFunction<? extends Character> mapper)
如果我删除它,我会收到以下错误
The method mapToInt((<no type> c) -> {}) is undefined for the type IntStream
有人能解释一下吗?似乎我从 IntStream 开始,转换为字符流,然后返回 IntStream。
【问题讨论】:
-
因为你的集合需要
Characters -
问题仍然缺乏的一件事是您真正想要实现的目标是什么?
-
@naman,试图获取字符串中不同字符的计数。正如下面所指出的,我应该为此使用不同的流。
标签: java collections java-8 set java-stream