package com.hz.demo;
import com.alibaba.fastjson.JSON;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import org.apache.commons.collections4.MapUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Demo4 {
public static void main(String[] args) {
List<Map<String,Object>> newData = Lists.newArrayList();
Map<String, Object> map1 = new HashMap<String, Object>();
map1.put("vin", "AAA");
map1.put("consumption", 55.2);
Map<String, Object> map2 = new HashMap<String, Object>();
map2.put("vin", "BBB");
map2.put("consumption", 23.2);
Map<String, Object> map6 = new HashMap<String, Object>();
map6.put("vin", "BBB");
map6.put("consumption", 101.2);
Map<String, Object> map7 = new HashMap<String, Object>();
map7.put("vin", "BBB");
map7.put("consumption", 103.2);
Map<String, Object> map8 = new HashMap<String, Object>();
map8.put("vin", "CCC");
map8.put("consumption", 300.0);
Map<String, Object> map4 = new HashMap<String, Object>();
map4.put("vin", "DDD");
map4.put("consumption", 3.2);
Map<String, Object> map5 = new HashMap<String, Object>();
map5.put("vin", "DDD");
map5.put("consumption", 4.2);
newData.add(map1);
newData.add(map2);
newData.add(map6);
newData.add(map7);
newData.add(map8);
newData.add(map4);
newData.add(map5);
Map<String,Integer> rs = Maps.newLinkedHashMap();
Map<String, Object> maxData = newData.stream().max((Map<String, Object> d1, Map<String, Object> d2) -> MapUtils.getDouble(d1, "consumption")
.compareTo(MapUtils.getDouble(d2, "consumption"))).get();
int maxC = (int)Math.ceil(MapUtils.getDouble(maxData, "consumption") / 10);
for(int j = 0; j < 10; j++){
int min = maxC * j ;
int max = (j+1) * maxC;
int count = 0;
rs.put(min +"-" + max,count);
for (int i = 0; i < newData.size(); i++) {
Map<String,Object> map = newData.get(i);
Double consumption = MapUtils.getDouble(map, "consumption");
if(consumption > min && consumption <= max){
count++;
rs.put(min +"-" + max,count);
}
}
}
System.out.println(JSON.toJSONString(rs));
}
}