Java 映射流操作中的强制转换调用不工作
我有以下内容(使用org.json.simple): 问题是,在我调用map将流元素强制转换为Java 映射流操作中的强制转换调用不工作,java,java-stream,Java,Java Stream,我有以下内容(使用org.json.simple): 问题是,在我调用map将流元素强制转换为JSONObject之后,在下一次调用map时,元素仍然是Object,而不是JSONObject。不知道我做错了什么 相关:扩展了java.util.ArrayList,这意味着它扩展了原始类型 因此,results.stream()返回一个原始流,而不是流,即使在调用map(),您仍然会得到一个原始流,因此强制转换对您没有帮助 如果改为org.json.simple.JSONArrayextende
JSONObject
之后,在下一次调用map时,元素仍然是Object
,而不是JSONObject
。不知道我做错了什么
相关:扩展了java.util.ArrayList
,这意味着它扩展了原始类型
因此,results.stream()
返回一个原始流,而不是流
,即使在调用map()
,您仍然会得到一个原始流
,因此强制转换对您没有帮助
如果改为org.json.simple.JSONArray
extendedArrayList
,则会得到一个流
,在调用.map(JSONObject.class::cast)
之后,会得到一个流
我相信通过以下未经检查的演员阵容,你应该能够克服这一点:
final JSONArray results = (JSONArray) responseObject.get("results");
List<Object> genericResults = (List<Object>) results;
List<JSONObject> list =
genericResults.stream()
.filter(JSONObject.class::isInstance)
.map(JSONObject.class::cast)
.collect(Collectors.toList());
final JSONArray results=(JSONArray)responseObject.get(“结果”);
列出genericResults=(列表)结果;
列表=
genericResults.stream()
.filter(JSONObject.class::isInstance)
.map(JSONObject.class::cast)
.collect(Collectors.toList());
final JSONArray results = (JSONArray) responseObject.get("results");
List<Object> genericResults = (List<Object>) results;
List<JSONObject> list =
genericResults.stream()
.filter(JSONObject.class::isInstance)
.map(JSONObject.class::cast)
.collect(Collectors.toList());