JAVA获取两个List的交集、差集以及并集

2023-11-06

 

import java.util.Set;
import java.util.List;
import java.util.HashSet;
import java.util.TreeSet;
import java.util.Iterator;
import java.util.ArrayList;
import java.util.LinkedList;
 
public class getSet {
    
    public static void main(String args[]) {
        getList();
    }
    
    // 获取两个ArrayList的差集、交集、去重并集(数据量大小不限制)
    private static void getList() {
        List<String> firstArrayList = new ArrayList<String>();
        List<String> secondArrayList = new ArrayList<String>();
        List<String> defectList = new ArrayList<String>();//差集List
        List<String> collectionList = new ArrayList<String>();//交集List
        List<String> unionList = new ArrayList<String>();//去重并集List
        try {
            firstArrayList.add("aaa");
            firstArrayList.add("bbb");
            firstArrayList.add("ccc");
            firstArrayList.add("ddd");
 
            secondArrayList.add("bbb");
            secondArrayList.add("ccc");
            secondArrayList.add("eee");
            // 获取差集
            defectList = receiveDefectList(firstArrayList, secondArrayList);
            Iterator<String> defectIterator = defectList.iterator();
            System.out.println("===================差集===================");
            while(defectIterator.hasNext()) {
                System.out.println(defectIterator.next());
            }
            // 获取交集
            collectionList = receiveCollectionList(firstArrayList, secondArrayList);
            Iterator<String> collectionIterator = collectionList.iterator();
            System.out.println("===================交集===================");
            while(collectionIterator.hasNext()) {
                System.out.println(collectionIterator.next());
            }
            // 获取去重并集
            unionList = receiveUnionList(firstArrayList, secondArrayList);
            Iterator<String> unionIterator = unionList.iterator();
            System.out.println("===================去重并集===================");
            while(unionIterator.hasNext()) {
                System.out.println(unionIterator.next());
            }
        }catch(Exception e) {
            e.printStackTrace();
        }
    }
    
    /**
     * @方法描述:获取两个ArrayList的差集
     * @param firstArrayList 第一个ArrayList
     * @param secondArrayList 第二个ArrayList
     * @return resultList 差集ArrayList
     */
    public static List<String> receiveDefectList(List<String> firstArrayList, List<String> secondArrayList) {
        List<String> resultList = new ArrayList<String>();
        LinkedList<String> result = new LinkedList<String>(firstArrayList);// 大集合用linkedlist  
        HashSet<String> othHash = new HashSet<String>(secondArrayList);// 小集合用hashset  
        Iterator<String> iter = result.iterator();// 采用Iterator迭代器进行数据的操作  
        while(iter.hasNext()){  
            if(othHash.contains(iter.next())){  
                iter.remove();            
            }     
        }  
        resultList = new ArrayList<String>(result);
        return resultList;
    }
    
    /**
     * @方法描述:获取两个ArrayList的交集
     * @param firstArrayList 第一个ArrayList
     * @param secondArrayList 第二个ArrayList
     * @return resultList 交集ArrayList
     */
    public static List<String> receiveCollectionList(List<String> firstArrayList, List<String> secondArrayList) {
        List<String> resultList = new ArrayList<String>();
        LinkedList<String> result = new LinkedList<String>(firstArrayList);// 大集合用linkedlist  
        HashSet<String> othHash = new HashSet<String>(secondArrayList);// 小集合用hashset  
        Iterator<String> iter = result.iterator();// 采用Iterator迭代器进行数据的操作  
        while(iter.hasNext()) {
            if(!othHash.contains(iter.next())) {  
                iter.remove();            
            }     
        }
        resultList = new ArrayList<String>(result);
        return resultList;
    }
    
    /**
     * @方法描述:获取两个ArrayList的去重并集
     * @param firstArrayList 第一个ArrayList
     * @param secondArrayList 第二个ArrayList
     * @return resultList 去重并集ArrayList
     */
    public static List<String> receiveUnionList(List<String> firstArrayList, List<String> secondArrayList) {
        List<String> resultList = new ArrayList<String>();
        Set<String> firstSet = new TreeSet<String>(firstArrayList);
        for(String id : secondArrayList) {
            // 当添加不成功的时候 说明firstSet中已经存在该对象
            firstSet.add(id);
        }
        resultList = new ArrayList<String>(firstSet);
        return resultList;
    }
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JAVA获取两个List的交集、差集以及并集 的相关文章

  • JDK与JRE的安装与配置

    这两天为了这个JAVA的编译环境JDK和JRE的配置可花了不少心思 曾还一度把电脑的注册表给误删了 导致电脑重装了系统 这是血的教训 我买了一本学习JAVA的书 看了里面的视频终于把编译环境给配置好了 其实非常简单 开始讲步骤之前先声明一下
  • SPSS数据分析全套教程(2)—— 变量处理

    SPSS对数据的处理是以变量为前提的 因此本文章首先介绍定义变量 输入数据 再介绍保存数据 操作数据文件 最后介绍SPSS运行环境和系统参数的设置 启动SPSS后 出现如图所示数据编辑窗口 由于目前还没有输入数据 因此显示的是一个空文件 变
  • 七天学会C语言-第一天(C语言基本语句)

    一 固定格式 这个是C程序的基本框架 需要记住 include
  • Unity3D学习视频分享(百度云盘)

    目录 学习目标
  • Docker Tomcat 开启远程管理

    1 进入Tomcat容器 2 打开tomcat conf 修改tomcat users xml文件 vim相关操作 i 插入 Esc按键 退出编辑 wq 保存退出 文件中添加
  • python3的基础数据类型_Python3基础入门教程(一):基本数据类型

    本文用的编程工具为pycharm 一 Number Python3 支持 int float bool complex 复数 了解基础语法后 来学习基本数据类型 python中声明数据时不用指定数据类型 会自动识别 内置的 type 函数可
  • 【linux基础(五)】Linux中的开发工具(上)---yum和vim

    博主CSDN主页 杭电码农 NEO 专栏分类 Linux从入门到开通 代码仓库 NEO的学习日记 关注我 带你学更多操作系统知识 Linux中的开发工具 1 前言 2 Linux软件包管理器 yum 3 linux上安装和卸载软件包 4 L
  • Python解释器与Python编辑器的详细下载与安装过程

    在编写Python代码之前 你还有两件事情必须要做 第一件事情就是安装Python解释器 因为机器是没办法直接读懂我们编写的Python代码的 而是需要一个解释器作为中间的翻译 把代码转换为字节码后执行 Python的运行过程就是翻译一行执
  • opencv—python录制视频、保存视频

    使用opencv python录制视频 直接上源码 import numpy as np import cv2 cap cv2 VideoCapture 0 fourcc cv2 VideoWriter fourcc XVID out cv
  • 数据分析及可视化——京东上销量最高的鞋子

    个人简介 作者简介 大家好 我是W chuanqi 一个编程爱好者 个人主页 W chaunqi 支持我 点赞 收藏 留言 愿你我共勉 若身在泥潭 心也在泥潭 则满眼望去均是泥潭 若身在泥潭 而心系鲲鹏 则能见九万里天地 文章目录 一 数据
  • 树的数据结构与C++实现及其操作

    树的数据结构与C 实现及其操作 在计算机科学中 树是一种非常重要且常用的数据结构 它以分层的方式组织数据 并且在很多实际问题中都有广泛的应用 在本文中 我们将学习如何使用C 实现树的基本结构和操作 树的定义 树是一种由节点 node 组成的
  • 机器人用的是什么编程语言

    机器人用的是什么编程语言 家长在培养孩子的学习的时候 会给孩子选择一些能够有利于孩子成长的课程 就拿现在很多的家长想要孩子去学习机器人编程的课程来说 有的家长对于机器人用的是什么编程语言并不是很清楚 今天我们就一起来了解一下机器人用的是什么
  • 心理学的166个现象---之四

    61 霍桑效应 在美国芝加哥市郊外的霍桑工厂是一个制造电话交换机的工厂 具有较完善的娱乐设施 医疗制度和养老金制度等 但工人们仍愤愤不平 生产状况也很不理想 为探求原因 1924年11月 美国国家研究委员会组织了一个由心理学家等多方面专家参
  • 闲来没事,翻译的PyCharm Tip of Day(非专业)

    翻译链接 在有道云笔记上写的 点击可以查看应该 欢迎评论指正
  • ElasticSearch01-Linux下的ES与Kibana与ES的三大核心概念介绍

    安装 ES与Kibana 传统方式安装 下载安装包 环境备注 Linux Centos7等 安装jdk11 0 并配置环境 如果当前是jdk8 也不用卸载 因为ES的安装中以及默认有JDK版本了 进入官方下载 网址 安装ES不用使用root
  • OpenMv串口通信多次接收数据减小误差

    目录 1 串口通信概述 2 多个数据采样减小误差 3 代码实现 3 1 串口初始化 3 2 多次数据采样 3 3 数据处理 4 结果验证 1 串口通信概述 串口通信是多数嵌入式系统常用的通信方式 通过串口可以实现与其他串口设备的通信 如GP
  • 把图片用字节流方式 保存到数据库中

    如何将图片保存到SqlServer Oracle Access数据库中 首先 我们要明白图片是以二进制的形式保存在数据库中的 那么把图片保存到数据库中的步骤大体上有这几步 1 将图片转换为二进制数组 byte 2 把转换后的二进制数组 by
  • JdbcTemplate的四种批处理的用法

    JdbcTemplate批量写入方法详解 再做详解之前 我们先来了解一下JdbcTemplate批量操作的5个API接口 一 使用提供的SQL语句执行批处理 这个方法相对来说比较简单 不做详细解析 该方法主要是将提供的sql列表作为一个ba
  • KEIL 软件学习魔法棒

    Device 芯片选型 Target 晶振设置 Output 选择中间文件的生成路径 Objects 创建文件夹之后再选择 创建hex文件 Listing 创建文件夹之后再选择 USER 改变生成的 hex 文件路径 C C 宏定义 和 路
  • 由SOAP说开去 - - 谈谈WebServices、RMI、RPC、SOA、REST、XML、JSON

    引子 关于SOAP其实我一直模模糊糊不太理解 这种模模糊糊的感觉表述起来是这样 在使用web服务时 功能接口 本来我就可以通过安卓中固有的http类 使用http协议 来发送http请求 并且解析返回的数据 一般是xml或者json 得到我

随机推荐

  • python简单代码恶搞-python—做一个恶搞程序

    python 做一个恶搞程序 very easy print You can t win this game 你不可能赢这个游戏 n int input Between 1 and 10 type a number integer 在1到1
  • xcode 命令行编译iOS原生工程

    xcode 命令行编译iOS原生工程 xcodebuild简介 xcodebuild 用于编译xcode中的projects和workspaces xcodebuild命令官方说明 https www jianshu com p 4f4d1
  • 一级指针和二级指针的区别与应用

    一级指针 就是指针 即一个指向一块内存的地址 有了这个地址 我们就可以对这块内存进行读写操作 二级指针 指针的指针 也就是指向一块内存的指针的地址 因为指针本身也有自己的存储地址 有了指针的地址 我们就可以对这个指针进行操作 比如改变它的指
  • 【数据库学习笔记】基础篇

    文章目录 MySQL概述 数据库相关概念 主流的关系型数据库管理系统 MySQL图形化界面 MySQL的下载与配置 数据模型 SQL SQL通用语法 SQL分类 DDL数据定义语言 DDL总结 DML数据操作语言 DQL数据查询语言 基本查
  • 2022.04.13 力扣55,45,122

    学习 贪心算法 follow 代码随想录 55 跳跃游戏 题目描述 给定一个非负整数数组 nums 你最初位于数组的 第一个下标 数组中的每个元素代表你在该位置可以跳跃的最大长度 判断你是否能够到达最后一个下标 解析 方法一 暴力求解 从最
  • 用万能密码诠释SQL注入

    一 web程序的三层架构 要理解sql注入的原理 那么就先要了解web程序的三层架构 即客户端 服务器和数据库服务器之间的工作机制 逻辑关系大致如下图 1 表示层 UI 在Eclipse中是jsp 主要是指与用户交互的界面 浏览器 用于接收
  • 数字证书和密钥加密的理解

    1 密钥 密钥分为公钥和私钥 私钥只有一把 一般归内容发布者所有 而公钥有很多吧 有内容发布者发布给内容接受者 内容接受者用公钥来解密内容发布者用私钥加密的内容 2 密钥加密解密过程 首先 内容发布者会对内容进行hash处理 生成内容的摘要
  • bootstrap小例子(1)

    最近看了bootstrap的一个小的视频 快速的做出一个后台界面 介绍了一些典型的用法 里面涉及了 下拉菜单 胶囊菜单 胶囊菜单垂直显示 栅格排列 导航栏 字体图标 图片样式 输入组 折叠菜单panel 面包屑 表格样式 分页组件样式 下面
  • java中的IO与NIO

    一 IO与NIO 1 IO 简介 数据的以stream 流 的方式进行传输 流为IO流 IO是面向流的 分类 1 按流的方向 输入流 输出流 2 按流的性质 字节流 字符流 3 按流的角色 节点流 处理流 2 NIO 简介 数据的以块的方式
  • OKGO的使用和封装

    为什么要学习okgo框架 1 导入依赖 2 okgo GET请求 3 okgo POST请求 4 okgo 下载 获取下载进度 5 上传 OKGOHTTP封装 1 接口 2 单例 3 模型层接口 4 重写方法 5 在控制层controlle
  • Python简单实现数据降噪滤波处理_滢泷版

    Python简单实现数据降噪 滤波处理 滢泷版 由于项目需要对数据进行降噪滤波处理 又要尽可能保证变化特征不失真 我在网上搜索了一下Python的方库 没找到 我安装了scipy 之后找不到spline方法 也就知道怎么用了 顺便说一下 本
  • React18新特性

    React 团队在 2022 年 3 月 29 日正式发布了 React 的第 18 个版本 在这篇文章里简单介绍 React 18 的新特性 React Concurrent Mode 并发模式 的实现 以及简要的升级指南 New Fea
  • 机器学习-线性回归实验

    机器学习线性回归 用scikit learn和pandas学习线性回归 1 获取数据 定义问题 2 整理数据 3 准备数据 4 训练数据 5 模型评价 尝试用不同的线性模型进行训练 交叉验证 6 画图观察结果 7 python程序完整源代码
  • springboot中pom.xml、application.yml、application.properties

    首先 Java代码中是无法直接读取pom xml中的内容的 需要先把值转到xxx properties中 再通过程序读取xxx properties中对应的值 由于方式会被maven处理 如果你pom继承了spring boot start
  • HTTP的请求方式有哪些?

    一 GET方法 最常用的方法 它是发送一个请求来获取服务器上的资源 资源通过HTTP响应头和数据 如html文档 图片 样式 视频等 返回给客户端 如浏览器 二 POST方法 常用方法 用于向服务器提交数据 请求的参数要在请求体 body
  • 常用php正则表达式

    d 非负整数 正整数 0 0 9 1 9 0 9 正整数 d 0 非正整数 负整数 0 0 9 1 9 0 9 负整数 d 整数 d d 非负浮点数 正浮点数 0 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1
  • FATFS文件系统常用指令

    FATFS文件系统常用指令 一 说明 以官网下载的 ff12b 版本为例 定义变量举例 FRESULT res 文件操作结果 FATFS fs FatFs文件系统对象 FIL fp 文件对象 UINT br 文件成功写入数量 UINT bw
  • 安卓开发常用icon/png图样

    安卓开发常用icon png图样 平时开发当中会用到很多png图样 但是自己又不太会做 因此做好的办法就是直接在网上下载下来用了 这里给大家推荐一个比较好用的网站 免费的 有很多好的png可以直接下载下来使用 http www iconar
  • 磁盘达到99%的原因和解决方案

    今天查看了下任务管理器 发现磁盘管理达到99 我才开机没多久 没理由这么高的读取 频率 网上查了一下 发现是百度云的问题 一般是wsappx进程占用磁盘读取 解决方案 卸载百度云
  • JAVA获取两个List的交集、差集以及并集

    import java util Set import java util List import java util HashSet import java util TreeSet import java util Iterator i