将大数据量json数组转化为List输出的三种方式

import java.io.StringReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSONReader;
 
public class TestJson {
 
	public static void main(String[] args) {
		//创建10万条测试数据
		JSONArray jsonArray = new JSONArray();
		for(int i=0;i<100000;i++){
			JSONObject jsonObject = new JSONObject();
			Map<String, Object> map = new HashMap<String, Object>();
			map.put("MERCHCODE", "MERCHCODE"+i);
			map.put("DEVCODE", "DEVCODE"+i);
			map.put("TRANSTIME", "TRANSTIME"+i);
			map.put("TRANSAMT",  100+i);
			map.put("TRANSTYPE", "TRANSTYPE"+i);
			map.put("TRANSSTATUS", "TRANSSTATUS"+i);
			jsonObject.putAll(map);
			jsonArray.add(jsonObject);
		}
		//获取开始时间
		long startTime=System.currentTimeMillis();   
		
		//返回List
		List<Map<String, Object>> rsList = new ArrayList<Map<String, Object>>();
		/*第一种:将每个json数组元素转化为json对象,遍历添加到List中
		 * 程序运行时间: 4079ms总数:100000
		 * 程序运行时间: 400ms 总数:100
		 * 程序运行时间: 460ms总数:20
		 * 
		JSONArray array=JSON.parseArray(jsonArray.toJSONString());
		for (int i = 0; i < array.size(); i++) {
            JSONObject object2 = array.getJSONObject(i);//json数组对象
            Map<String, Object> map2 = new HashMap<String, Object>();
           for (Object k : object2.keySet()) {
                Object v = object2.get(k);
                map2.put(k.toString(), v);
           }
           rsList.add(map2);
      }*/
      
      
		/* 第二种:对象化,对返回字段进行转义,可自定义返回字段及类型   
		 * 程序运行时间: 4729ms 总数:100000
		 * 程序运行时间: 697ms 总数:100
		 * 程序运行时间: 605ms总数:20
		 * 
		List<HisDataReturnDto> datas=JSON.parseArray(jsonArray.toJSONString(), HisDataReturnDto.class);
		if(null != datas && datas.size() != 0){
			for(HisDataReturnDto data:datas){
				Map<String,Object> map = new HashMap<String,Object>();
				map.put("merchName", data.getMERCHNAME());
				map.put("merchCode", data.getMERCHCODE());
				map.put("devCode", data.getDEVCODE());
				map.put("transTime",data.getTRANSTIME());
				map.put("transAmt", data.getTRANSAMT());
				map.put("transType", data.getTRANSTYPE());
				map.put("transStatus",data.getTRANSSTATUS());
				rsList.add(map);
			}
		}*/
		
		/*第三种:读取流方式,数据量较大时很有优势
		 * 程序运行时间: 2602ms  总数:100000
		 * 程序运行时间: 447ms 总数:100
		 * 程序运行时间: 486ms总数:20
		 */
	    JSONReader reader = new JSONReader(new StringReader(jsonArray.toJSONString()));
	    reader.startArray();
	    Map<String, Object> map = new HashMap<String, Object>();
	    while (reader.hasNext()) {
		    reader.startObject();
		    while (reader.hasNext()) {
			    String arrayListItemKey = reader.readString();
			    String arrayListItemValue = reader.readObject();
			    map.put(arrayListItemKey, arrayListItemValue);
		    }
		    rsList.add(map);
		    reader.endObject();
	    }
	    reader.endArray();
	    reader.close();
	    //获取结束时间
	    long endTime=System.currentTimeMillis();
	    System.out.println("程序运行时间: "+(endTime-startTime)+"ms");
	    System.out.println("总数:"+rsList.size());
	}

转载:https://blog.csdn.net/sophylyzz/article/details/84908634?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522159488626019724848303733%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=159488626019724848303733&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v3~rank_ctr_v4-1-84908634.ecpm_v1_rank_ctr_v4&utm_term=json%E6%95%B0%E7%BB%84%E8%BD%AC%E5%8C%96%E4%B8%BAlist

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值