当前位置: 首页 > 知识库问答 >
问题:

如何使用流api从映射中筛选键值

曹建华
2023-03-14

我有一张地图

contractAttributesMap=new HashMap<String,WsContractAttribute>();
contractAttributesMap.put("entityDisplayName", new WsContractAttribute("label_contractmap_entityDisplayName","entityDisplayName",WsContractAttribute.AttriibuteType.TEXT));
contractAttributesMap.put("entityNumber",new WsContractAttribute("label_contractmap_entityNumber","entityNumber",WsContractAttribute.AttriibuteType.TEXT));
//other code

我想从键列表中获取值,如拥有键列表,即键名称列表。

我知道一个方法

private static List<WsContractAttribute> getContractAttributes(Set<String> fields){
          for(String fieldName:fields){
           contractAttributesMap.entrySet()
                    .parallelStream()
                    .filter(e -> e.getKey().contains(fieldName))
                    .map(e -> e.getKey())
                    .collect(Collectors.toList());
          }


      }

但是,我想将此列表本身传递到流API中,而不是循环,这将过滤匹配的值和返回列表。这是可能的! !提前致谢。

共有1个答案

许远航
2023-03-14

这将由@aioobe解释

  private static List<WsContractAttribute> getContractAttributes(Set<String> fields){
          List<WsContractAttribute> list=fields.stream().map(contractAttributesMap::get).collect(Collectors.toList());
          return list;
      }
 类似资料:
  • 我有一个映射“m”和一个列表“l”,现在我想从那个映射“m”中获取值,使用“l”中可用的键列表。我想用Java 8流的概念,任何人都可以在这方面提供帮助。 我编码打印这些值,但我需要的是将值放入列表中 list.stream().foreach(s->{system.out.println(map.get(s));});

  • 我正在寻找第一次到流API的Java8。我尝试创建一个筛选器来从映射中删除元素。

  • 问题内容: 给定一个Person上具有(etc)方法的where,我该如何将其转换为通过调用获得的where ? 我会使用Java 8之前的版本 但我想使用流和lambda做到这一点。 我看不到如何以功能样式执行此操作:Map / HashMap不实现。 返回可以流式传输的,但是如何向目的地地图添加新的内容? 问题答案: 使用Java 8,您可以执行以下操作: 尽管使用Guava的Maps.tra

  • 我看不出如何在函数式中做到这一点:map/hashmap不实现。 返回一个,我可以对其进行流式传输,但如何将新的添加到目标映射?

  • 我有以下枚举: 我想用和null值中的键创建映射。我试着按照这个答案下面的代码: 但我在这里得到的是。我做错了什么?

  • 我有一个,另一个作为参数 我想创建一个按类型返回的方法 通常我会写 用java stream写的最佳做法是什么?