java - 迭代映射列表 (List<Map<Integer,String>>) 并查找特定值?

标签 java java-8

我有一张 map 列表。 List<Map<Integer,String>> lines 。 我希望迭代列表,并且所有映射仅查看特定的键值对,试图找到匹配的字符串值 - “hi”。

示例:我只对查看特定键范围 5-10 的条目集并检查匹配的值感兴趣。以下是我的计划。迭代列表的方法检查每个映射是否有匹配项。

是否有更好或更清洁/高效的方法?

//basic logic
for(Map<Integer,String> map : lines)
{
   return map.entrySet().stream()
     .filter(e -> 11 > e.getKey().intValue() && e.getKey().intValue() >= 5)
     .anyMatch(entry -> entry.getValue().equalsIgnoreCase("hi"));
}

最佳答案

由于您已经在使用流,因此您还可以流式传输列表:

return lines.stream()
            .flatMap(map -> map.entrySet().stream())
            .filter(entry -> 11 > entry.getKey() && entry.getKey() >= 5)
            .anyMatch(entry -> entry.getValue().equalsIgnoreCase("hi"));

如果列表中的任何映射具有键在 5 到 10(含)之间且值为“hi”(忽略大小写)的条目,则这将返回 true,并将返回 false 否则。这是我对你最初意图的最好猜测;如果我不正确,请告诉我。

关于java - 迭代映射列表 (List<Map<Integer,String>>) 并查找特定值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52864869/

相关文章:

java - Junit 测试中的模拟错误 UnfinishedStubbingException

java - 有人建议我不要在这里使用反射......为什么不呢?

java - 如何使用子工作流程循环进入oozie?

java - 用于求和 java 8 float 的自定义收集器实现

spring-boot - java 8如何实现异步重试机制?

java - 在自己的静态初始化器中创建类的对象

java - 如何将子类实例分配给实现相同接口(interface)的 Enum 项?

java - 在 Java 8 中,返回元素流的良好做法

lambda - java 8流-如果没有找到就处理

java - 如何使用 groupBy 创建一个值为 BigDecimal 字段平均值的 map ?