java - java流找到匹配还是最后一个?
问题描述
java - 如何使用java流查找列表中的第一个匹配项或最后一个元素?
这意味着如果没有元素匹配条件,则返回最后一个元素。
例如:
OptionalInt i = IntStream.rangeClosed(1,5)
.filter(x-> x == 7)
.findFirst();
System.out.print(i.getAsInt());
我应该怎么做才能让它返回 5;
解决方案
鉴于列表
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
你可以这样做:
int value = list.stream().filter(x -> x == 2)
.findFirst()
.orElse(list.get(list.size() - 1));
在这里,如果过滤器的计算结果为 true,则检索元素,否则返回最后一个元素。
如果列表为空,您可以返回默认值,例如 -1。
int value = list.stream().filter(x -> x == 2)
.findFirst()
.orElse(list.isEmpty() ? -1 : list.get(list.size() - 1));
推荐阅读
- c# - 当字段值为是/否时隐藏表单上的字段
- visual-studio-code - 如何增加光标对面的选择?
- windows - 如何连接 Windows 打印驱动程序管道过滤器 [C++/C] [WDK]
- amazon-web-services - Setting up local https network to mock amazonaws.com in docker
- javascript - Why does my if statement work with an else if, but not an OR operator
- javascript - pentaho cde table 组件选择不同的数据源
- batch-file - 如何回显变量,“^&”在哪里?(批处理文件)
- amazon-web-services - 无法从服务器获得任何响应
- python - 当我点击 Heroku Postgres 时出现此错误消息 {"error":{"id":"unauthorized","message":"Invalid credentials provided."}}
- javascript - angularjs - 组合来自 for 循环 api 调用的数据