我有一个 bean 和一个流
public class TokenBag {
private String token;
private int count;
// Standard constructor and getters here
}
Stream<String> src = Stream.of("a", "a", "a", "b", "b", "a", "a");
并且想要对返回 TokenBag 对象的另一个流的流应用一些中间操作。在此示例中,必须有两个:("a", 3)、("b", 3) 和 ("a", 2)。
请把它看作一个非常简单的例子。实际上,逻辑比仅仅计算一行中的相同值要复杂得多。实际上,我尝试设计一个简单的解析器,它接受 token 流并返回对象流。
另请注意,它必须保持流(没有中间累积),并且在本例中,它必须真正计算一行中的相同值(它与分组不同)。
非常感谢您对此任务解决方案的一般方法提出建议。
最佳答案
Map<String, Long> result = src.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
System.out.println(result);
这将给出所需的输出
a=4, b=3
然后您可以继续迭代映射并创建 TokenBag
对象。
关于java - Java 8 Stream API 中连续计算相同项目的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48439457/