所以,我有一个包含另一个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”,其中包含另外两个arraylist。
我想使用contains方法检查内部arraylist是否包含一个值并返回该arrayList的索引。
由于
答案 0 :(得分:3)
试试这个
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);