前言:在初中数学,我们也有集合的概念,非但如此,还有集合中的一些运算,例如交集、并集、差集等,那么我们java中的集合是否有这样的运算呢?今天我们就一起来看看!

01

并集

就是将两个集合合起来,元素都放在一起,这个比较简单,我们只需要使用集合的addAll方法就可以,代码如下:

public static void main(String[] args) {//第一个集合List<String> list1 = new ArrayList<String>();list1.add("一");list1.add("二");list1.add("三");System.out.println("第一个集合中的元素:");for (String str : list1) {System.out.print(str + " ");}//第二个集合List<String> list2 = new ArrayList<String>();list2.add("二");list2.add("三");list2.add("四");System.out.println("\n第二个集合中的元素:");for (String str : list2) {System.out.print(str + " ");}//集合之间的交集运算list1.addAll(list2);System.out.println("\n最后集合中的元素:");for (String str : list1) {System.out.print(str + " ");}}

运行结果:

此时的list1集合里面不光有原来的元素,还有list2的元素。

02

交集

即两个集合中都有的元素,一个有另一个也有的,代码如下:(省略声明和初始化集合的代码,和第一个示例一样)

list1.retainAll(list2);

运行结果如下:

很显然,共同存在的只有“二三”,大家想想,list1中的“一”还在吗?

03

差集

即在list1中存在的,但是list2中没有的元素,代码如下:(省略声明和初始化集合的代码,和第一个示例一样)

list1.removeAll(list2);

运行结果:

显然:“一”在list2中是不存在的。原理就是删除list1中出现在list2中的元素。

04

无重复的并集

我们都知道,并集是list1+list2的所有,那如果list1里面有的,list2里面也有,你这一并集,最后的list1集合肯定会有重复的元素,那如何实现不重复的并集呢?代码如下:

public static void main(String[] args) {//第一个集合List<String> list1 = new ArrayList<String>();list1.add("一");list1.add("二");list1.add("三");System.out.println("第一个集合中的元素:");for (String str : list1) {System.out.print(str + " ");}//第二个集合List<String> list2 = new ArrayList<String>();list2.add("二");list2.add("三");list2.add("四");System.out.println("\n第二个集合中的元素:");for (String str : list2) {System.out.print(str + " ");}//集合之间的交集运算list1.removeAll(list2);list1.addAll(list2);System.out.println("\n最后集合中的元素:");for (String str : list1) {System.out.print(str + " ");}}

运行结果:

代码分析,我们先使用差集,过滤一下list1中所有在list2中出现的元素,出现了就删除,也就是remoAll方法调用完之后,list1中还剩“一”,然后list2中还有“二、三、四”,两个一并集,自然结果就是“一、二、三、四”

你看看这样处理集合优雅不优雅?其实通常我们遇到类似的需求时,一般都会拿起来for循环就遍历,操作,这种方法想都不会想到。

往期精彩

自从有了这款辣椒酱,拌饭再也不用老干妈

2020-10-30

使用相对长度单位rem布局网页内容

2020-11-03

使用相对长度单位em布局网页内容

2020-11-02

binarySearch与IndexOf的那些事儿~

2020-11-01

新机必装!那些你不知道的实用技软件在这里!文末免费获取

2020-10-31

如何使用bootstrap实现轮播图?

2020-10-29

班级日常分享:一天一瞬间!

2020-10-29

点分享

点点赞

点在看

集合还有这么优雅的运算法?相关推荐

  1. 计算机科学中的递归算法是把问题,递归运算法

    本词条缺少概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 递归运算法,做为一种算法在程序设计语言中广泛应用,指函数/过程/子程序在运行过程中直接或间接调用自身而产生的重入现象. 中文名 ...

  2. Dataset:数据集集合(综合性)——机器学习、深度学习算法中常用数据集大集合(建议收藏,持续更新)

    Dataset:数据集集合(综合性)--机器学习.深度学习算法中常用数据集大集合(建议收藏,持续更新) 目录 常规数据集 各大方向分类数据集汇总 具体数据集分类 相关文章 DL:关于深度学习常用数据集 ...

  3. java集合——集合与数组间的转换+算法

    [0]README 0.1) 本文描述转自 core java volume 1, 源代码为原创,旨在理解 java集合--集合与数组间的转换+算法 的相关知识: 0.2) for full sour ...

  4. LeCun称梯度下降是最优雅的 ML 算法,Marcus:我不同意

    作者|李梅 编辑|陈彩娴 来源|AI科技评论 前几天刚跟马斯克吵完架的Gary Marcus,又双叒叕跟人吵起来了,这次的吵架对象是Yann LeCun. 一向喜欢给深度学习泼冷水的Marcus,在今 ...

  5. LeCun称梯度下降是最优雅的 ML 算法,Marcus:我不同意!

    点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 点击进入-> CVer 微信技术交流群 转载自:AI科技评论  作者|李梅  编辑|陈彩娴 前几天刚跟 ...

  6. 【交换变量】三种交换变量的方式:中间变量法,加减法,异或运算法

    这篇文章记录一下,交换变量的三种常见方式,分别是:中间变量法,加减法,异或运算法. 目录 (1)中间变量法 (2)加减法 (3)异或运算法 (1)中间变量法 算法思想: 声明一个额外的临时变量. 临时 ...

  7. 各种边缘检测算法效果对比-差分运算法、Sobel、Scharr、Laplace(拉普拉斯)、Roberts、Canny

    2016-7-14日新增形态学边缘检测法,实际上形态学也是基于窗(卷积核)来实现的,因为你腐蚀和膨胀是基于窗的操作嘛,详情见图像形态学概要-腐蚀.膨胀.开运算.闭运算.形态学梯度(形态学边缘提取).顶 ...

  8. c语言数值运算法和非数值运算法,数据结构(c语言)1.数据结构是一门研究非数值计算的程序设计问题中计算机的 以及它们之间的 _ 和运算等的学科。① A....

    共回答了16个问题采纳率:68.8% 1.数据结构是一门研究非数值计算的程序设计问题中计算机的 A 以及它们之间的 _ B 和运算等的学科. ① A. 数据元素 B. 计算方法 C. 逻辑存储 D. ...

  9. jsonobject转list集合_怎样优雅的操作集合,CollectionUtils工具类正确使用姿势

    点击上方"码之初"关注,···选择"设为星标" 与精品技术文章不期而遇 来源:cnblogs.com/qdhxhz/p/10787130.html 这篇讲的Co ...

最新文章

  1. Java项目:控制台商城系统(java+打印控制台)
  2. Ant Design 入门-参照官方文档使用组件
  3. java 分布式服务器通信,Pigeon是大众点评的一个分布式服务通信框架RPC
  4. 超详细!各种内部排序算法的比较
  5. 手撕 MySQL 事务,发生了什么?
  6. 【转载】分布式系统的理解
  7. python : 将txt文件中的数据读为numpy数组或列表
  8. jdk8默认垃圾回收器_JVM系列之经典垃圾回收器(上篇)
  9. NYOJ 819奶牛 水
  10. dump文件_centos7 磁盘与文件系统管理
  11. 边界路由linux,路由表构成简介(Destination/Gateway/Genmask/Iface)
  12. 青云QingCloud:重剑无锋 大巧不工
  13. 2143.replace.favo.xrcch.com Dns劫持解决方案
  14. 四川理工计算机专业好不好,急!!!!四川理工 、 宜宾学院 、 内江师范学院 哪个学校计算机专业好点?...
  15. java cancel_Future.cancel()疑难杂症
  16. java中接口可以继承接口吗?
  17. 计算机语言对传统文化的影响,网络文化对传统文化的冲击
  18. mac 备份android 手机,Mac怎么备份_Windows怎么备份_iOS怎么备份_安卓怎么备份-太平洋IT百科手机版...
  19. JS - 日期 - 使用setDate(0)获取上个月的最大一天
  20. react里面 内联css样式怎么样_React.js内联样式最佳做法

热门文章

  1. strcmp()字符串比较函数
  2. 团体程序设计天梯赛-练习集L1-025 正整数A+B (15分)(getline输入)
  3. word List 46
  4. 大学生开题报告php,php毕业设计开题报告
  5. 蓝桥杯 数字三角形 贪心+动态规划
  6. AT2645 [ARC076D] Exhausted?(Hall定理推论/线段树+扫描线)
  7. Codeforces Round #627 (Div. 3) E. Sleeping Schedule dp
  8. YBTOJ:伞兵空降(二分图匹配)
  9. P3586-[POI2015]LOG【线段树】
  10. jzoj1282-资源勘探【统计】