如何从列表中对其进行过滤并转换为Map <string,string>

时间:2018-12-27 16:33:29

标签: java lambda filter java-stream collectors

我正在尝试从字符串列表中进行过滤,并将结果与​​通过测试的字符串和一般原因一起加载到Map<String,String>中。

这就是我要尝试的原因:

Map<String,String> invalidStrings = null;

invalidStrings = src.getAllSubjects()
                 .stream()
                 .filter(name -> !(name.contains("-value") || name.contains("-key")))
                 .collect(Collectors.toMap(Function.identity(), "Some Reason"));

这就是我得到的:

  

Collectors类型的toMap(Function,Function)方法不适用于参数   (函数,字符串)

不知道为什么我不能做到这一点...在我搜索的所有地方,建议基本上和我所做的一样。

1 个答案:

答案 0 :(得分:3)

这是错误的重要部分:

  

toMap(Function,Function)的方法 <---注意Function, Function

这意味着toMap期望第一个参数是您通过Function.identity()v -> v正确完成的函数,但您传递的第二个值是{{1 }}

相反,值映射器必须是一个函数:

String

注意 .collect(Collectors.toMap(Function.identity(), v -> "Some Reason")); ;