JAVA 函数如何对多个JSONArray取交集,取并集

本文介绍了一种处理JSON数据的方法,包括如何根据id字段从多个JSONArray中获取具有相同id的JSONObject的交集及并集。这些方法适用于需要整合来自不同数据源的数据的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**
   * 根据JSONArray中JSONObject的id不同取交集
   * @return
   */
    public static JSONArray intersectResult(JSONArray... arrays){
        JSONArray ret = new JSONArray();
        if(arrays==null||arrays.length==0)
            return ret;
        Set<String> first_ids=new HashSet<String>();
        Map<String,JSONObject> objs=new HashMap<String, JSONObject>();
        JSONArray first=arrays[0];
        for(int i=0;i<first.length();i++){
            JSONObject o =first.getJSONObject(i);
            String id=o.getString("id");
            first_ids.add(id);
            objs.put(id, o);
        }

        for(int i=1;i<arrays.length;i++){
            JSONArray this_array=arrays[i];
            Set<String> this_ids=new HashSet<String>();
            for(int j=0;j<this_array.length();j++){
                this_ids.add(this_array.getJSONObject(j).getString("id"));
            }
            first_ids.retainAll(this_ids);
        }

        for(String id : first_ids){
            ret.put(objs.get(id));
        }

        return ret;
    }
  /**
   * 根据JSONArray中JSONObject的id不同取并集
   * @param arrays
   * @return
   */
  public static JSONArray joinJSONArray(JSONArray... arrays){
      JSONArray ret=new JSONArray();
      Set<String> ids=new HashSet<String>();
      for(JSONArray array : arrays){
          if(array==null)
              continue;
          for(int i=0;i<array.length();i++){
              JSONObject obj=array.getJSONObject(i);
              if(ids.contains(obj.get("id")))
                  continue;
              ret.put(obj);
              ids.add(obj.getString("id"));
          }
      }
      return ret;
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值