获取list中某一列属性或者筛选获取某几行信息

测试代码:

根据某个属性获取某一列值:

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}]
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值