测试代码:
根据某个属性获取某一列值:
List listT = list.stream().map(Map-> Map.get("lactation")).distinct().collect(Collectors.toList()); // lactationlist [0,1,2]
过滤筛选(可筛选出符合条件的list集合):
List<Map<String,Object>> listFilter = list.stream().filter(Map-> Objects.equals(Map.get("lactation"),lactation)).filter(Map-> Objects.equals(Map.get("sc_cattle_id"),scId)).collect(Collectors.toList());
public static void main(String[] args){
List<Map<String,Object>> list = new ArrayList<>();
Map<String,Object> map1 = new HashMap<>();
map1.put("lactation","0");
map1.put("sc_cattle_id","123");
map1.put("name","一二三");
map1.put("pyts","167");
map1.put("pztc","619");
map1.put("ptl","26.98");
list.add(map1);
Map<String,Object> map2 = new HashMap<>();
map2.put("lactation","0");
map2.put("sc_cattle_id","456");
map2.put("name","四五六");
map2.put("pyts","173");
map2.put("pztc","189");
map2.put("ptl","23.98");
list.add(map2);
Map<String,Object> map3 = new HashMap<>();
map3.put("lactation","1");
map3.put("sc_cattle_id","123");
map3.put("name","一二三");
map3.put("pyts","187");
map3.put("pztc","184");
map3.put("ptl","21.98");
list.add(map3);
Map<String,Object> map4 = new HashMap<>();
map4.put("lactation","1");
map4.put("sc_cattle_id","456");
map4.put("name","四五六");
map4.put("pyts","183");
map4.put("pztc","186");
map4.put("ptl","22.98");
list.add(map4);
// 获取lactation这一列信息,并去除重复的
List listT = list.stream().map(Map-> Map.get("lactation")).distinct().collect(Collectors.toList()); // lactationlist [0,1,2]
List listScId = list.stream().map(Map-> Map.get("sc_cattle_id")).distinct().collect(Collectors.toList()); // 公司id list
List<Map<String,Object>> listNew = new ArrayList<>();
for(int i = 0;i<listT.size();i++){
Map<String,Object> map = new HashMap<>();
String lactation = String.valueOf(listT.get(i)) ; // lactation
map.put("lactation",lactation);
for (int k = 0;k<listScId.size();k++){
String scId = String.valueOf(listScId.get(k)) ; // scid
// 根据lactation和scid 筛选出某些数据
List<Map<String,Object>> listFilter = list.stream().filter(Map-> Objects.equals(Map.get("lactation"),lactation)).filter(Map-> Objects.equals(Map.get("sc_cattle_id"),scId)).collect(Collectors.toList());
for(Map pMap : listFilter){
map.put(scId+"_name",pMap.get("name")) ;
map.put(scId+"_ptl",pMap.get("ptl")) ;
map.put(scId+"_pyts",pMap.get("pyts")) ;
map.put(scId+"_pztc",pMap.get("pztc")) ;
}
}
listNew.add(map);
}
System.out.println("listNew"+listNew.toString());
}
输出结果:
[{123_pztc=619, 123_pyts=167, 123_ptl=26.98, 456_ptl=23.98, lactation=0, 123_name=一二三, 456_name=四五六, 456_pyts=173, 456_pztc=189}, {123_pztc=184, 123_pyts=187, 123_ptl=21.98, 456_ptl=22.98, lactation=1, 123_name=一二三, 456_name=四五六, 456_pyts=183, 456_pztc=186}]