小编use*_*171的帖子

在使用先前元素值对每个元素执行操作之后,使用Java 8 Stream Reduce返回List

我是Streams和Reduce的新手,所以我正在尝试并遇到问题:

我有一个计数器列表,它有一个启动计数器和结束计数器.项目的startcounter始终是前一个的终结者.我有一个这些计数器的列表listItems,我想有效地循环,过滤掉非活动记录,然后将列表缩小为一个新的列表,其中设置了所有的StartCounters.我有以下代码:

List<CounterChain> active = listItems.stream()
                .filter(e -> e.getCounterStatus() == CounterStatus.ACTIVE)
                .reduce(new ArrayList<CounterChain>(), (a,b) -> { b.setStartCounter(a.getEndCounter()); return b; });
Run Code Online (Sandbox Code Playgroud)

但它并没有真正奏效,我有点卡住了,有人能给我一些建议来帮我搞定吗?或者是否有同样有效的更好的方法来做到这一点?谢谢!

java reduce java-8 java-stream

5
推荐指数
1
解决办法
5250
查看次数

将if语句压缩成更短更优雅的代码

我有以下if-else块,我想知道是否有更优雅的方式可以编写此代码...我使用的是Java 8

if(valueString != null) {
    return valueString;
}
else if(valueInt != null) {
    return String.valueOf(valueInt);
}
else if(valueFloat != null) {
    return String.valueOf(valueFloat);
}
else if(valueDate != null){
    return String.valueOf(valueDate);
}
else if(valueBit != null) {
    return String.valueOf(valueBit);
}
else {
    return null;
}
Run Code Online (Sandbox Code Playgroud)

java java-8

1
推荐指数
1
解决办法
158
查看次数

标签 统计

java ×2

java-8 ×2

java-stream ×1

reduce ×1