千家信息网

Java8中怎么用Lambda遍历两个List匹配数据

发表于:2024-11-27 作者:千家信息网编辑
千家信息网最后更新 2024年11月27日,这篇"Java8中怎么用Lambda遍历两个List匹配数据"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下
千家信息网最后更新 2024年11月27日Java8中怎么用Lambda遍历两个List匹配数据

这篇"Java8中怎么用Lambda遍历两个List匹配数据"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"Java8中怎么用Lambda遍历两个List匹配数据"文章吧。

    Lambda遍历两个List匹配数据

    1. 定义一个静态方法

    /**     *  通过遍历两个List中按id属性相等的归结到resultList中     * @param oneList     * @param twoList     */    public static List> compareListHitData(List> oneList, List> twoList) {        List> resultList = oneList.stream().map(map -> twoList.stream()                .filter(m -> Objects.equals(m.get("id"), map.get("id")))                .findFirst().map(m -> {                    map.putAll(m);                    return map;                }).orElse(null))                .filter(Objects::nonNull).collect(Collectors.toList());        return resultList;    }

    2. Main方法测试

    public static void main(String[] args) {        List> oneList = new ArrayList<>();        Map oneMap = new HashMap<>();        oneMap.put("id", 111);        oneMap.put("userName", "何金荣");        Map twoMap = new HashMap<>();        twoMap.put("id", 222);        twoMap.put("userName", "Hejinrong");        oneList.add(oneMap);        oneList.add(twoMap);        List> twoList = new ArrayList<>();        Map threeMap = new HashMap<>();        threeMap.put("id", 111);        threeMap.put("userName", "何金荣");        Map fourMap = new HashMap<>();        fourMap.put("id", 333);        fourMap.put("userName", "Hejinrong");        twoList.add(threeMap);        twoList.add(fourMap);        List> resultList = compareListHitData(oneList, twoList);        System.out.println(resultList);    }

    3. 输出结果

    jdk1.8的stream对两个List遍历匹配数据的处理

    import java.util.ArrayList;import java.util.List;import java.util.Objects;import java.util.stream.Collectors; public class testStream {    public static void main(String[] args) {        List prizeRecords = new ArrayList(6);        List stockDTOList = new ArrayList();        for (int i = 0; i < 6; i++) {            AwardInfo AwardInfo = new AwardInfo();            AwardInfo.setStockNo((i+1)+"");            prizeRecords.add(AwardInfo);        }        for (int i = 0; i < 3; i++) {            StockInfo stockDTO = new StockInfo();            stockDTO.setStockNo((i+1)+"");            stockDTO.setThirdStockNo("third"+(i+1));            stockDTOList.add(stockDTO);        }        StockInfo stockDTO1 = new StockInfo();        stockDTO1.setStockNo((44)+"");        stockDTO1.setThirdStockNo("third"+44);        stockDTOList.add(stockDTO1);         StockInfo stockDTO2 = new StockInfo();        stockDTO2.setStockNo((55)+"");        stockDTO2.setThirdStockNo("third"+55);        stockDTOList.add(stockDTO2);         //prizeRecords与stockDTOList求差集        List resultList1 = prizeRecords.stream()                .map(map -> stockDTOList.stream()                        .filter(m -> !Objects.equals(m.getStockNo(), map.getStockNo()))                        .findFirst().map(m -> {                            return map;                        }).orElse(null))                .filter(Objects::nonNull).collect(Collectors.toList());        /**         * 求差集:失败结果参考         * [AwardInfo{userId='null', stockNo='1', thirdStockNo='null'},         * AwardInfo{userId='null', stockNo='2', thirdStockNo='null'},         * AwardInfo{userId='null', stockNo='3', thirdStockNo='null'},         * AwardInfo{userId='null', stockNo='4', thirdStockNo='null'},         * AwardInfo{userId='null', stockNo='5', thirdStockNo='null'},         * AwardInfo{userId='null', stockNo='6', thirdStockNo='null'}]         */        System.out.println(resultList1.toString());         /* List list2 = prizeRecords.stream()                .filter(map -> stockDTOList.stream().anyMatch(map1 -> map.getStockNo().equals(map1.getStockNo())))                .forEach(map -> {                    map.setThirdStockNo(map1.getThirdStockNo());                });*/        List resultList2 = prizeRecords.stream().map(m->{            stockDTOList.stream().filter(m2->Objects.equals(m.getStockNo(), m2.getStockNo()))                    .forEach(s-> m.setThirdStockNo(s.getThirdStockNo()));            return m;        }).collect(Collectors.toList());        /**         * stockNo=4,5,6的结果没去掉!         * [AwardInfo{userId='null', stockNo='1', thirdStockNo='third1'},         * AwardInfo{userId='null', stockNo='2', thirdStockNo='third2'},         * AwardInfo{userId='null', stockNo='3', thirdStockNo='third3'},         * AwardInfo{userId='null', stockNo='4', thirdStockNo='null'},         * AwardInfo{userId='null', stockNo='5', thirdStockNo='null'},         * AwardInfo{userId='null', stockNo='6', thirdStockNo='null'}]         */        System.out.println(resultList2.toString());         List list3 = prizeRecords.stream()                .map(map -> stockDTOList.stream()                        .filter(m -> Objects.equals(m.getStockNo(), map.getStockNo()))                        .findFirst().map(m -> {                            map.setThirdStockNo(m.getThirdStockNo());                            return map;                        }).orElse(null))                .filter(Objects::nonNull).collect(Collectors.toList());        /**         * stockNo=4,5,6的结果已去掉         * [AwardInfo{userId='null', stockNo='1', thirdStockNo='third1'},         * AwardInfo{userId='null', stockNo='2', thirdStockNo='third2'},         * AwardInfo{userId='null', stockNo='3', thirdStockNo='third3'}]         */        System.out.println(list3.toString());    }    static class StockInfo{        private String stockNo;        private String stockName;        private String thirdStockNo;         public String getStockNo() {            return stockNo;        }         public void setStockNo(String stockNo) {            this.stockNo = stockNo;        }         public String getStockName() {            return stockName;        }         public void setStockName(String stockName) {            this.stockName = stockName;        }         public String getThirdStockNo() {            return thirdStockNo;        }         public void setThirdStockNo(String thirdStockNo) {            this.thirdStockNo = thirdStockNo;        }         @Override        public String toString() {            return "StockInfo{" +                    "stockNo='" + stockNo + '\'' +                    ", stockName='" + stockName + '\'' +                    ", thirdStockNo='" + thirdStockNo + '\'' +                    '}';        }    }    static class AwardInfo{               private String userId;               private String stockNo;                private String thirdStockNo;         public String getUserId() {            return userId;        }         public void setUserId(String userId) {            this.userId = userId;        }         public String getStockNo() {            return stockNo;        }         public void setStockNo(String stockNo) {            this.stockNo = stockNo;        }         public String getThirdStockNo() {            return thirdStockNo;        }         public void setThirdStockNo(String thirdStockNo) {            this.thirdStockNo = thirdStockNo;        }         @Override        public String toString() {            return "AwardInfo{" +                    "userId='" + userId + '\'' +                    ", stockNo='" + stockNo + '\'' +                    ", thirdStockNo='" + thirdStockNo + '\'' +                    '}';        }    }}

    以上就是关于"Java8中怎么用Lambda遍历两个List匹配数据"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。

    两个 数据 内容 结果 差集 文章 方法 知识 篇文章 金荣 价值 大部分 就是 属性 更多 步骤 知识点 行业 资讯 资讯频道 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 什么是单节点服务器 大连仚古网络技术有限公司 网络安全知识资料手抄报图片 单人舞视频软件开发 天涯明月刀各服务器 ggd配电柜数据库 青少年网络安全信息稿 李沧区商城软件开发哪家好 毕业设计网络安全 硬件上面的软件开发 阿里巴巴网络安全工信部 广播稿网络安全知识 游戏服务器带20台电脑 了解高校网络安全现状 遵义市第三届网络安全大会 战地怎样选服务器 环球互联网络技术有限公司 亿联网络技术有限公司涨薪 中国网络安全教育考试 许可服务器错误怎么办 前端后端都属于软件开发吗 使命召唤ol连接服务器会断开吗 买服务器需要提供什么 运动会日记软件开发 了解软件开发的app 江苏税控盘服务器设置云主机 上海汇合网络技术有限责任公司 游戏服务器带20台电脑 山西新一代软件开发价格服务标准 眼镜行业软件开发哪正规
    0