我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java8的Lambda遍历两个List匹配数据方式

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java8的Lambda遍历两个List匹配数据方式

Lambda遍历两个List匹配数据

1. 定义一个静态方法


    public static List<Map<Object, Object>> compareListHitData(List<Map<Object, Object>> oneList, List<Map<Object, Object>> twoList) {
        List<Map<Object, Object>> 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<Map<Object, Object>> oneList = new ArrayList<>();
        Map<Object, Object> oneMap = new HashMap<>();
        oneMap.put("id", 111);
        oneMap.put("userName", "何金荣");
        Map<Object, Object> twoMap = new HashMap<>();
        twoMap.put("id", 222);
        twoMap.put("userName", "Hejinrong");
        oneList.add(oneMap);
        oneList.add(twoMap);
        List<Map<Object, Object>> twoList = new ArrayList<>();
        Map<Object, Object> threeMap = new HashMap<>();
        threeMap.put("id", 111);
        threeMap.put("userName", "何金荣");
        Map<Object, Object> fourMap = new HashMap<>();
        fourMap.put("id", 333);
        fourMap.put("userName", "Hejinrong");
        twoList.add(threeMap);
        twoList.add(fourMap);
        List<Map<Object, Object>> 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<AwardInfo> prizeRecords = new ArrayList<AwardInfo>(6);
        List<StockInfo> stockDTOList = new ArrayList<StockInfo>();
        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<AwardInfo> 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());
        
        System.out.println(resultList1.toString());
 
 
       
        List<AwardInfo> 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());
        
        System.out.println(resultList2.toString());
 
        List<AwardInfo> 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());
        
        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 + '\'' +
                    '}';
        }
    }
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Java8的Lambda遍历两个List匹配数据方式

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

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

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

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录