java - 如何检查 ArrayList 中是否存在包含 ArrayList 的值

标签 java arraylist

所以,我有一个 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/

相关文章:

java - 摆脱并发修改异常

java - 带有 CA 签名证书的 2 路 TLS

java - 使用 JADE 和 Excel 的问题

Java:在大字典中搜索字符串的非常快速的方法

java - 如何对包含整数的 ArrayList<String> 进行排序?

java - Arraylist 中 Arraylist 的 Clear() 函数

java - Jersey Web 服务和 hibernate 一对多映射

java - SSL 未找到合适的证书

java - 按字母顺序对 <Player> ArrayList 名称进行排序

c# - 创建可变大小的数组