如何使用 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));
这里如果过滤器的计算结果为真,则检索元素,否则返回最后一个元素。
如果列表是空,你可以返回一个默认值,例如-1。
int value = list.stream().filter(x -> x == 2)
.findFirst()
.orElse(list.isEmpty() ? -1 : list.get(list.size() - 1));
关于java流找到匹配还是最后一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53647174/