所以,我有一个 ArrayList,其中包含另一个 ArrayList,并且我试图查看内部 Arraylist 是否包含我正在查找的值。如果是,我想返回该数组所在的索引。
List<List<String>> messages = parseMessages(extract.getPath());
String needle = "test";
messages.stream() // Stream<List<String>>
.filter(message -> message.contains(needle))
.flatMap(List::stream) // Stream<String>
.forEach(System.out::println);
所以我在捕获 ArrayList 中的 ArrayList 之后编写了这段代码。
我尝试访问的数组是“Messages”,其中包含另外 2 个数组列表。
我想使用 contains 方法来检查内部 arraylist 是否包含值并返回该 arrayList 的索引。
谢谢
最佳答案
试试这个
messages.stream()
.filter(message -> message.contains(needle))
.map(message -> message.indexOf(needle))
.forEach(System.out::println);
map
阶段返回值的索引。即使找到包含 needle
的匹配内部列表后,对于其他列表也会继续执行此操作。要在第一个匹配后停止,您可以使用 findFirst
。
messages.stream()
.filter(message -> message.contains(needle))
.map(message -> message.indexOf(needle))
.findFirst()
.ifPresent(System.out::println);
如果你想获取外部列表的索引,
IntStream.range(0, messages.size())
.filter(index -> messages.get(index).contains(needle))
.forEach(System.out::println);
同样,一场比赛后停止,
IntStream.range(0, messages.size())
.filter(index -> messages.get(index).contains(needle))
.findFirst()
.ifPresent(System.out::println);
关于java - 如何检查 ArrayList 中是否存在包含 ArrayList 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50491355/