从以获取到的数组中取到值,放入到一个新的数组中,并合并去重,萌新求教

根据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)