Java 8 如何使用java流的过滤操作获取if-else条件?
问题: 从整数列表中得到奇数的平方和偶数的一半,然后返回值列表 Ans:1>我将在map()方法中写入逻辑和if-else条件Java 8 如何使用java流的过滤操作获取if-else条件?,java-8,java-stream,predicate,Java 8,Java Stream,Predicate,问题: 从整数列表中得到奇数的平方和偶数的一半,然后返回值列表 Ans:1>我将在map()方法中写入逻辑和if-else条件 List output=intArray.stream().map(x->{ 如果(x%2==0){ x=x/2; }否则{ x=x*x; } }).collect(Collectors.toList()); 他们是否有更好的方法专门使用过滤器来实现这一点?尝试使用地图: 让我知道这是否适合您。 您可以了解有关映射和筛选的更多信息在转换数据(执行数学运算)时,您不能在
List output=intArray.stream().map(x->{
如果(x%2==0){
x=x/2;
}否则{
x=x*x;
}
}).collect(Collectors.toList());
他们是否有更好的方法专门使用过滤器来实现这一点?尝试使用地图:
让我知道这是否适合您。您可以了解有关映射和筛选的更多信息在转换数据(执行数学运算)时,您不能在此处使用
filter
<代码>过滤器用于过滤流中的元素。例如,如果您只想保留偶数,则可以使用过滤器
您需要使用的是映射
,就像您已经使用的那样。请注意,映射应始终返回数据。您的代码缺少此返回语句
为了使其更具可读性,可以在方法中拆分映射逻辑。这使您的流易于阅读和遵循(当然,当您给该方法起一个好名字时)
代码示例
List output=intArray.stream()
.map(测试::divideOrPow)
.collect(Collectors.toList());
专用int-divideOrPow(intx){
如果(x%2==0){
返回x/2;
}否则{
返回x*x;
}
}
此代码正在编译吗?你什么也不退。重新分配传入参数对调用方没有影响。过滤器用于从列表中删除元素。因为您想对它们执行操作,所以Map是正确的方法<代码>映射(x->x%2==0?x/2:x*x)
List<Integer> output = intArray.stream().map(x-> {
if(x%2 ==0){
x=x/2;
}else{
x= x*x;
}
}).collect(Collectors.toList());
map(x -> x % 2 == 0? x / 2: x * x);
List<Integer> output = intArray.stream()
.map(test::divideOrPow)
.collect(Collectors.toList());
private int divideOrPow(intx) {
if (x % 2 == 0) {
return x / 2;
} else {
return x * x;
}
}