根据ID获取到数组的Map集合,因为是根据ID查的,所以会有多个数组,要对这些数组合并去重,但是需求格式中要求一共有四种数组,而数据中只有两种数组,并且两个新的数组中的值是之前查到的两个数组中的某些值,所以,就要将查到的两个数组中的值取出来放入到两个新的数组中
这是我的SecviceImp实现的代码
@Override
public List<Result> queryResultData(String[] idList){
//通过idList获取到数据
List<Result> results = resultMapper.queryResultData(idList);
//判断获取到的数据不为空
if(results != null && results.size()>0){
Map<String, Object> refMap = new HashMap<>();
//定义变量
List<Map<String, Object>> nodes = new ArrayList<>();
List<Map<String, Object>> edges = new ArrayList<>();
//这是两个新数组的定义变量
List<Map<String, Object>> nodeType = new ArrayList<>();
List<Map<String, Object>> rsType = new ArrayList<>();
//遍历列表
for(int i = 0; i < results.size(); i++){
Result result = results.get(i);
String Content = results.getContent();
//这里把获取到的数据转换格式
Map<Stirng, Object> content = JSONObject.parseObject(content,Map.class);
/**
*因为数据格式是这样的
*{"nodes":{}"_data":{
*"id":22,
*......}},
*"edges":{"_data":{
*"id":22,
*......]}}
*主要的数据就是"_data"数组列表中的数据,左移最终要获取的是data中的数据
Map<String, Object> node_s= (Map)content.get("nodes");
Map<String, Object> node_data_s = (Map)content.get("_data");
//遍历获取到的列表
node_data_s.forEach((k,v)->{
if(v != null & v instanceof Map){
nodes.add((Map)v);
}
});
Map<String, Object> edge_s= (Map)content.get("edges");
Map<String, Object> edge_data_s = (Map)content.get("_data");
//遍历获取到的列表
edge_data_s.forEach((k,v)->{
if(v != null & v instanceof Map){
edges.add((Map)v);
}
});
//到这里,获取到数据就弄完了
//但是还有两个数组nodeType和rsType
//这两个数组的值在上两个数组中,所以我还要去取出上两个数组中的值放到这两个数组中
//这一步我就卡住了,毕竟没有做过这种格式的数据处理
}
}
//在这里是去重步骤
List<Map<String,Object> nodesList = nodes.stream().Collectors.collectingAndThen(
Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(o -> Long.parseLong(o.get("_id") + "")))),ArrayList::new));
//这里是返回数据的
refMap.put("nodes",nodesList);
refMap.put("edges",edgesList);
//这里除了一个问题,按理来说返回是这样的 return refMap;
//但是报错了,提示我要转换成为List格式,这个是转换不了的,不知道怎么回事
}
//这里也是同样的问题
return new HashMap<>();
求各位大佬讲解一下,感激不尽
你定义的方法的返回类型是List啊,public List<Result> queryResultData(String[] idList),要返回list,如果想返回Map,拟定于方法:public Map queryResultData(String[] idList)