lambda Java的嵌套
我可以使用嵌套的for来使用lambda执行此示例吗lambda Java的嵌套,java,lambda,Java,Lambda,我可以使用嵌套的for来使用lambda执行此示例吗 static int test(int[] n, int []m , int b) { int result = 0; List<Integer> list = new LinkedList<>(); for (int i : m) { for (int j : n) { result = i+j; if (re
static int test(int[] n, int []m , int b) {
int result = 0;
List<Integer> list = new LinkedList<>();
for (int i : m) {
for (int j : n) {
result = i+j;
if (result <=b) {
list.add(result);
}
}
}
静态int测试(int[]n,int[]m,int-b){
int结果=0;
列表=新建LinkedList();
for(int i:m){
for(int j:n){
结果=i+j;
如果(result,则您的方法需要返回List
,而不是int
然后您可以使用Stream/lambda
实现以下功能
- 迭代第一个数组
n
- 使用第二个数组
m
- 保留低于
b
- 将它们从
int
装箱到Integer
- 收集在
列表中
静态列表测试(int[]n,int[]m,int-b){
返回Arrays.stream(m)//IntStream
.flatMap(i->array.stream(n).map(j->i+j))//IntStream
.filter(sum->sum,那么您希望lambda位于何处?您的方法应该返回列表,而不是intel。即使您的问题已结束,请考虑投票通过/如果您满意,请接受答案;)最好在装箱之前进行筛选。
static List<Integer> test(int[] n, int[] m, int b) {
return Arrays.stream(m) // IntStream
.flatMap(i -> Arrays.stream(n).map(j -> i + j)) // IntStream
.filter(sum -> sum <= b) // IntStream
.boxed() // Stream<Integer>
.collect(Collectors.toList()); // List<Integer>
}