我在 map 列表中存储了一些数据

List<Map<String, Integer>> myList;

有没有一种简单的方法可以得到所有的键,而不用一个元素一个元素地go 调用Map::keySet

例如,我有一个列表((Bob, 1), (James, 5)),其中Bob和James都是映射中的关键字,我如何才能获得一个只有(Bob, James)的列表?

推荐答案

这应该行得通.

  • 流传输 map 列表
  • 展平关键字集的流
  • 把它们收集起来.放在一起.
Set<String> result =  
  mylist.stream().flatMap(map->map.keySet().stream())
        .collect(Collectors.toSet());

这里有另一种避免平面映射的方法.但它确实会在每一张 map 上迭代.MapMulti将每个密钥放在流上,然后将它们收集到一个集合中.

result = myList.stream().<String>mapMulti((map, consumer)-> {
    for (String key : map.keySet()) {
        consumer.accept(key);
    }}).collect(Collectors.toSet());

}

Java相关问答推荐

如何用javac编译Java类,即使对像java.lang.*这样的基本类也没有任何依赖关系?

Java WireMock定义存根在Cucumber并行执行的多线程测试中失败

无法了解Java线程所消耗的时间

为什么使用JDK21获取锁定锁比使用JDK11慢

自定义批注的外推属性值

格式中的特定回录键-值对

GetChildren().emoveAll()不会删除 node

每次FXMLLoader调用ApplationConext.getBean(类)时创建@Component的新实例

如何从日志(log)行中删除包名称?

在Eclipse中调试未导出的JDK模块的Java包

支持MySQL 5.6的最新Hibernate版本

如何在我的世界中为互动增加冷却时间?

Quarkus:运行时出现EnumConstantNotPresentException

IntelliJ IDEA依赖项工具窗口丢失

带有可选部分的Java DateTimeForMatter

当使用不同的参数类型调用时,为什么围绕Objects.equals的类型安全包装不会失败?

如何使用Java ZoneID的区域设置?

按长度排序字符串数组

HBox内部的左对齐按钮(如果重要的话,在页码内)

JOOQ:批处理CRUD操作使用动态表定义,如何?