我有两个列表,我想在第二个列表开始具有比第一个列表更高的值时找到索引。 e.g:
名单A:[6,9,15,17,18,20]
名单B:[5,8,14,16,19,22]
列表B的值高于列表A中相同索引中的值的索引为4.
我尝试使用zip,然后使用findFirst,但我不知道如何获取索引而不是元素。
{{1}}
有没有一种很好的方法使用Java 8?
答案 0 :(得分:2)
当然你可以使用流。 :-)回到索引的解决方案是使用IntStream.range()
:
OptionalInt first = IntStream.range(0, Math.min(listA.size(), listB.size()))
.filter(i -> listB.get(i) > listA.get(i))
.findFirst();
System.out.println(first);
打印:
OptionalInt[4]
在实际使用中,您可能会以某种方式使用OptionalInt
,例如ifPresent
或orElse
方法。
答案 1 :(得分:1)
我想我找到了办法:
IntStream.range(0, Min(listA.size, listB.size))
.filter(i -> listA.get(i) < listB.get(i))
.findFirst()
.orElse(-1)
答案 2 :(得分:0)
您可以尝试这样的事情:
private static int getIndex(List<Integer> first, List<Integer> second) {
int result = -1;
for (int i = 0; i < Math.min(first.size(), second.size()); ++i) {
if (second.get(i) > first.get(i)) {
result = i;
break;
}
}
return result;
}