无法使用Java8从地图中获取设置

用户名

我想做什么

Set<A> set=new HashSet();
Map<String,List<String>> map=new HashMap();
    if(map.keySet().contains("key"){
    for(String str: map.get("key")
    {
        for(A a : listOfA)
        {
            if(a.getString().equalsIgnoreCase(str);
            set.add(a);
        }
    }

    }

我尝试了什么

if(map.keySet().contains("key")
{
    listOfA
    .stream()
     .filter(t->t.getString().equalsIgnoreCase(map.get("key")
                                               .stream
                                            .flatMap(c->c.toString()))
     .distinct()
     .collect(Collectors.toSet()):

}

//错误String类型的equalsIgnoreCase(String)方法不适用于参数(Stream)

if(map.keySet().contains("key")
{
    map.get("key").stream().filter(t->t.equals(listOfA.stream().map(a->a.getString()))).collect(Collectors.toSet());
}

并且此方法返回Set < String>,显然是作为输出,但我想让Set < A>作为输出

那么如何使用函数式编程来解决这个问题

他们是

您可以检查是否有任何Stringmap.get("key")equalsIgnoreCasegetString()给定的A通过流实例map.get("key")和使用anyMatch

List<String> value = map.get("key");
Set<A> set = null;
if (value != null) {
   set = listOfA.stream()
                .filter(a->value.stream()
                                .anyMatch(s->a.getString().equalsIgnoreCase(s)))
                .collect(Collectors.toSet());
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章