java8stream下的groupby与tomap性能测试
java8 stream下的groupby与tomap性能测试
直接上代码:
public void testJson() {
JSONArray jsonArray = new JSONArray();
JSONObject jsonObject1 = new JSONObject();
jsonObject1.put("companyName", "A");
jsonObject1.put("orderAmt", "100");
jsonObject1.put("Qty", "1");
jsonArray.add(jsonObject1);
JSONObject jsonObject2 = new JSONObject();
jsonObject2.put("companyName", "A");
jsonObject2.put("orderAmt", "200");
jsonObject2.put("Qty", "3");
jsonArray.add(jsonObject2);
JSONObject jsonObject3 = new JSONObject();
jsonObject3.put("companyName", "B");
jsonObject3.put("orderAmt", "400");
jsonObject3.put("Qty", "5");
jsonArray.add(jsonObject3);
JSONObject jsonObject4 = new JSONObject();
jsonObject4.put("companyName", "B");
jsonObject4.put("orderAmt", "200");
jsonObject4.put("Qty", "5");
jsonArray.add(jsonObject4);
long t1 = System.currentTimeMillis();
Collection<Object> list=jsonArray.stream().upingBy(o -> ((JSONObject) o).getString("companyName"), Collectors
.ducing((v1, v2) -> {
JSONObject o1 = (JSONObject) v1;
JSONObject o2 = (JSONObject) v2;
o1.put("orderAmt", o1.getIntValue("orderAmt") + o2.getIntValue("orderAmt"));
o1.put("Qty", o1.getIntValue("Qty") + o2.getIntValue("Qty"));
return v1;
}), Optional::get))).values();
System.out.println(list);
long t2 = System.currentTimeMillis();
System.out.println(t2-t1);
Map map =  list.stream().Map(o -> ((JSONObject) o).getString("companyName"),o ->o,(v1, v2) -> {
JSONObject o1 = (JSONObject) v1;
JSONObject o2 = (JSONObject) v2;
o1.put("orderAmt", o1.getIntValue("orderAmt") + o2.getIntValue("orderAmt"));
o1.put("Qty", o1.getIntValue("Qty") + o2.getIntValue("Qty"));
return v1;
}));
System.out.println(list);
long t3 = System.currentTimeMillis();
System.out.println(t3-t2);
}
结果:
java stream
[{“companyName”:“A”,“Qty”:4,“orderAmt”:300}, {“companyName”:“B”,“Qty”:10,“orderAmt”:600}] 45
[{“companyName”:“A”,“Qty”:4,“orderAmt”:300}, {“companyName”:“B”,“Qty”:10,“orderAmt”:600}] 2

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。