Java-8 JSONArray到HashMap

Java-8 JSONArray到HashMap,java,json,lambda,java-8,java-stream,Java,Json,Lambda,Java 8,Java Stream,我正试图通过streams和Lambdas将JSONArray转换为Map。以下操作不起作用: org.json.simple.JSONArray jsonArray = new org.json.simple.JSONArray(); jsonArray.add("pankaj"); HashMap<String, String> stringMap = jsonArray.stream().collect(HashMap<String, String>::new, (

我正试图通过
streams
Lambdas
JSONArray
转换为
Map
。以下操作不起作用:

org.json.simple.JSONArray jsonArray = new org.json.simple.JSONArray();
jsonArray.add("pankaj");
HashMap<String, String> stringMap = jsonArray.stream().collect(HashMap<String, String>::new, (map,membermsisdn) -> map.put((String)membermsisdn,"Error"), HashMap<String, String>::putAll);
HashMap<String, String> stringMap1 = jsonArray.stream().collect(Collectors.toMap(member -> member, member -> "Error"));
第4行
给出了以下错误:

Type mismatch: cannot convert from Object to HashMap<String,String>
类型不匹配:无法从对象转换为HashMap

我正在努力学习Lambdas和streams。有人能帮我吗?

看来json simple的
JSONArray
扩展了
ArrayList
,但没有提供任何泛型类型。这会导致
返回一个也没有类型的

知道了这一点,我们可以在
List
的界面上编程,而不是
JSONArray

List<Object> jsonarray = new JSONArray();
List jsonarray=new jsonarray();
这样做将允许我们像这样正确地流式处理:

Map<String, String> map = jsonarray.stream().map(Object::toString).collect(Collectors.toMap(s -> s, s -> "value"));
Map Map=jsonarray.stream();

我认为这不一定是重复的。这是对JSONArray的转换,问题是使用lambdas@ozOli在否决或对您认为错误的事情做出反应之前,请仔细阅读/思考该赋值将生成编译器警告。它应该是
List
,而不是
List
@VGR,因为它不会生成任何警告。我刚试过。它会根据您的设置生成警告。但是,它也会在
上生成一个警告。add
所以我没有考虑太多。它会在
JSONArray
的每个元素上调用
toString
JSONArray
toString
将被调用
Map<String, String> map = jsonarray.stream().map(Object::toString).collect(Collectors.toMap(s -> s, s -> "value"));