lambda Java的嵌套

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

我可以使用嵌套的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 (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>
}