我有一个数字列表
List<Integer> tensOfMinutes = Arrays.asList(10, 20, 30, 40, 50, 60);
Run Code Online (Sandbox Code Playgroud)
我正在尝试确定输入int Integer minutes;是否在上面数组的任何两个成员之间.
示例:对于输入,Integer minutes = 23;我希望得到20作为答案.
有关如何在迭代tensOfMinutes流时完成此任务的任何想法?
你可以这样做:
List<Integer> l = Arrays.asList(10, 20, 30, 40, 50, 60)
.stream()
.filter( (i) -> i<23 )
.collect(Collectors.toList());
System.out.println( l.get( l.size() - 1 ) );
Run Code Online (Sandbox Code Playgroud)
您筛选出大于的所有元素,23然后打印剩余元素中的最后一个元素.
使用dropWhileJava 9,Scala和Haskell中的函数会更容易:
Holger改进版
Stream<Integer> stream = Arrays.asList(10, 20, 30, 40, 50, 60).stream();
stream.filter( i -> i<23 )
.reduce( (a,b) -> b )
.ifPresent(System.out::println);
Run Code Online (Sandbox Code Playgroud)
您可以看到(a,b) -> blambda用于表示最后一个元素以及ifPresent用于使其安全的方法.
| 归档时间: |
|
| 查看次数: |
791 次 |
| 最近记录: |