Java 比较两个List对象差集(根据某一值)

 很多都是比较List的,和自身业务不符,jdk1.8 新特性强大的Stream API  ,具体是什么方法,什么作用自行百度,复制粘贴可以解决问题就OK+

 复制粘贴即可用,简单修改AvoidHouse 对象类型、getHoseCode 获取比较的键值就可以了。

/**
     * 互相比较两个List 我的业务需要,根据自己需要进行修改
     * @param oldList    原有数据
     * @param newList    新数据
     *原数据减新数据为消除
     *新数据减上一期为新增
     * @return 本次比较新增的数量和消除的数量
     */
    private JSONObject com(List oldList,List newList){

        JSONObject data = new JSONObject();
        
        // 分别拿到原有数据和新数据List 中的比较键值   我得是hoseCode   根据code对比两个List 数据中是否互相包含
        List avoidHouseOldListCode = oldList.stream().map(AvoidHouse::getHoseCode).collect(Collectors.toList()); 
        List avoidHouseNewListCode = newList.stream().map(AvoidHouse::getHoseCode).collect(Collectors.toList());

        
        
        
        List addHouse = newList.stream().filter(house -> !avoidHouseOldListCode.contains(house.getHoseCode())).collect(Collectors.toList());
        List remHouse = oldList.stream().filter(house -> !avoidHouseNewListCode.contains(house.getHoseCode())).collect(Collectors.toList());

        data.put("addnum",addHouse.size());
        data.put("remnum",remHouse.size());
        return data;
    }

你可能感兴趣的:(java,servlet)