我试图从列表中识别其前任大于其值的数字。
在lambda表达式中,如果我返回b,则其行为符合预期,但如果我返回a,则给出错误的输出。
这两个return语句有什么区别?
List<Integer> list = Arrays.asList(1,2,3,4,5,8,7);
List<Integer> result = new ArrayList<>();
list.stream().reduce((a,b) -> {if (a < b) result.add(a);return b;});
System.out.println(result);
result.clear();
list.stream().reduce((a,b) -> {if (a < b) result.add(a);return a;});
System.out.println(result);
Run Code Online (Sandbox Code Playgroud)
输出:
[1、2、3、4、5]
[1,1,1,1,1,1]