Vic*_*cky 4 java java-8 java-stream
试用java 8流.在流中是否可以从包含大量元素的List中查找以X,Y,Z开头的元素计数.
transactions.stream()
.filter(e -> startsWith("X"))
.count();
transactions.stream()
.filter(e -> startsWith("Y"))
.count();
transactions.stream()
.filter(e -> startsWith("Z"))
.count();
Run Code Online (Sandbox Code Playgroud)
上面的代码给出了列表中以X,Y,Z开头的元素的计数,但在上面的例子中,我遍历列表三次以获得数据.这可以通过使用简单的for循环迭代列表一次来完成.是否可以在单个流中执行所有这些条件[仅迭代一次]而不是使用多个流?
任何帮助是极大的赞赏.
ste*_*fen 10
我不会为此使用流.但如果必须,请看一下这段代码:
Map<String, Long> collect = transactions.stream().collect(Collectors.groupingBy(t -> {
if (t.startsWith("X")) {
return "X";
}
if (t.startsWith("Y")) {
return "Y";
}
if (t.startsWith("Z")) {
return "Z";
}
return "none";
}, Collectors.counting()));
Run Code Online (Sandbox Code Playgroud)
会印出类似的东西
{X=1, Y=1, Z=1, none=1}
Run Code Online (Sandbox Code Playgroud)
针对具体情况
| 归档时间: |
|
| 查看次数: |
100 次 |
| 最近记录: |