JavaSE 计算2个List集合中的交集、差集、并集、去重并集
VideoOrder.java
重写里面的equals和hashCode方法
class VideoOrder {
private int price;
private String title;
public VideoOrder(String title, int price) {
this.title = title;
this.price = price;
}
@Override
public boolean equals(Object o) {
if (this == o)
return true;
if (o == null || getClass() != o.getClass())
return false;
VideoOrder that = (VideoOrder) o;
return price == that.price && Objects.equals(title, that.title);
}
@Override
public int hashCode() {
return Objects.hash(price, title);
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
@Override
public String toString() {
return "VideoOrder{" + "price=" + price + ", title='" + title + '\'' + '}';
}
}
main方法
public static void main(String[] args) {
List<VideoOrder> videoOrders1 = new ArrayList<>();
videoOrders1.add(new VideoOrder("a课程", 22));
videoOrders1.add(new VideoOrder("w课程", 200));
videoOrders1.add(new VideoOrder("c课程", 100));
videoOrders1.add(new VideoOrder("d课程", 33));
videoOrders1.add(new VideoOrder("f课程", 1));
List<VideoOrder> videoOrders2 = new ArrayList<>();
videoOrders2.add(new VideoOrder("a课程", 22));
videoOrders2.add(new VideoOrder("b课程", 18));
videoOrders2.add(new VideoOrder("d课程", 33));
videoOrders2.add(new VideoOrder("f课程", 1));
videoOrders2.add(new VideoOrder("z课程", 22));
// 交集,方式一
// videoOrders1.retainAll(videoOrders2);
// System.out.println(videoOrders1);
//方式二
List<VideoOrder> intersectionList = new ArrayList<>();
for (VideoOrder videoOrder : videoOrders1) {
if (videoOrders2.contains(videoOrder)) {
intersectionList.add(videoOrder);
}
}
System.out.println("交集=" + intersectionList);
// videoOrders1差集,方式一
// videoOrders1.removeAll(videoOrders2);
// System.out.println(videoOrders1);
//方式二
List<VideoOrder> diffList1 = new ArrayList<>();
for (VideoOrder videoOrder : videoOrders1) {
if (!videoOrders2.contains(videoOrder)) {
diffList1.add(videoOrder);
}
}
System.out.println("订单1差集=" + diffList1);
// videoOrders2差集
// videoOrders2.removeAll(videoOrders1);
// System.out.println(videoOrders2);
List<VideoOrder> diffList2 = new ArrayList<>();
for (VideoOrder videoOrder : videoOrders2) {
if (!videoOrders1.contains(videoOrder)) {
diffList2.add(videoOrder);
}
}
System.out.println("订单2差集=" + diffList2);
// 并集
videoOrders1.addAll(videoOrders2);
System.out.println(videoOrders1);
// 去重并集
// Set<VideoOrder> set = new HashSet<>(videoOrders1);
// System.out.println(set);
}
p.p1 { margin: 0; font: 12px Menlo }
p.p1 { margin: 0; font: 12px Menlo }
JavaSE 计算2个List集合中的交集、差集、并集、去重并集的更多相关文章
- List集合中的交集 并集和差集
目录 List集合求交集 并集 差集 Set集合 Lambda表达式 List集合求交集 并集 差集 两种方法求集 Set集合 交集 两个集合中有相同的元素 抽取出来的数据就是为交集 @Test pu ...
- More is better(hdu 1856 计算并查集集合中元素个数最多的集合)
More is better Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 327680/102400 K (Java/Others) ...
- 使用XtraReport的CalculatedFiled(计算字段)实现RDLC报表中表达式
DevExpress报表确实强大,花样繁多,眼花缭乱. 这次使用XtraReport开发报表,很多问题在官方的文档中并没有详细的说明,特此记录. 1.XtraReport中FormattingRule ...
- PHP的排列组合问题 分别从每一个集合中取出一个元素进行组合,问有多少种组合?
首先说明这是一个数学的排列组合问题C(m,n) = m!/(n!*(m-n)!) 比如:有集合('粉色','红色','蓝色','黑色'),('38码','39码','40码'),('大号','中号') ...
- Java集合中的Map接口
jdk1.8.0_144 Map是Java三种集合中的一种位于java.util包中,Map作为一个接口存在定义了这种数据结构的一些基础操作,它的最终实现类有很多:HashMap.TreeMap.So ...
- Java集合中的AbstractMap抽象类
jdk1.8.0_144 AbstractMap抽象类实现了一些简单且通用的方法,本身并不难.但在这个方法中有两个方法非常值得关注,keySet和values方法源码的实现可以说是教科书式的典范. 抽 ...
- Java集合中的LinkedHashMap类
jdk1.8.0_144 本文阅读最好先了解HashMap底层,可前往<Java集合中的HashMap类>. LinkedHashMap由于它的插入有序特性,也是一种比较常用的Map集合. ...
- List集合中的数据按照某一个属性进行分组
有的时候,我们需要在java中对集合中的数据进行分组运算.例如:Bill对象有money(float)和type(String)属性,现有个集合List<Bill>,需要按照Bill的ty ...
- 为什么你学不会递归?告别递归,谈谈我的一些经验 关于集合中一些常考的知识点总结 .net辗转java系列(一)视野 彻底理解cookie,session,token
为什么你学不会递归?告别递归,谈谈我的一些经验 可能很多人在大一的时候,就已经接触了递归了,不过,我敢保证很多人初学者刚开始接触递归的时候,是一脸懵逼的,我当初也是,给我的感觉就是,递归太神奇了! ...
- How to: Calculate a Property Value Based on Values from a Detail Collection 如何:基于详细信息集合中的值计算属性值
This topic describes how to implement a business class, so that one of its properties is calculated ...
随机推荐
- 纯JS实现多张图片无缝滚动和多张图片上下滚动的效果--JavaScript实例集锦(初学)
我们会看到很多的网站上会使用多张图片无缝滚动的效果. 下面我就介绍几种纯JS实现多张图片的无缝滚动,并实现鼠标移到图片上运动停止的效果,可以控制图片左右滚动.1.效果展示: 代码实现: <!DO ...
- python教程3.1:数据类型:字符串+列表list
一.字符串 字符串是⼀个有序的字符的集合,⽤于在计算机⾥存储和表示⽂本信息 常用方法--str.fun() 全局函数 二.列表list []内以逗号分隔,按照索引,存放各种数据类型,每个位置代表⼀个 ...
- C语言:输出大写的三角形字母表(进阶)
//该程序只支持输入大写字母,输入G,就输出A~G的三角形字母表 /* 从A到Z的输出数量应该是1 3 5 7 9..... */ 利用这个特性,对空格和字母进行输出 A字母在 ...
- gcc版本升级
升级链接: CentOS 7 gcc版本需升级到7.5.0 ,详细可参考文档:https://learn.microsoft.com/zh-cn/azure/cognitive-services/sp ...
- nginx相关报错
# openresty -s reloadnginx: [warn] conflicting server name "community-gw.xxx.cn" on 0.0.0. ...
- redis三主三从集群快速搭建
redis集群快速搭建 1 本文以redis6.2.6版本为例,快速搭建一套三主三从的redis集群,已经提前将脚本写好,只需要在节点上面进行执行即可安装 #!/bin/bash install_re ...
- 一文读懂Apollo客户端配置加载流程
SpringBoot集成Apollo源码分析 本文基于 apollo-client 2.1.0 版本源码进行分析 Apollo 是携程开源的配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修 ...
- 一个简单demo展示应用接口使用goroutine优雅退出
package main import ( "context" "errors" "log" "net/http" &q ...
- ASP.NET Core - 实现自定义WebApi模型验证 ModelState
Framework时代 在Framework时代,我们一般进行参数验证的时候,以下代码是非常常见的 [HttpPost] public async Task<JsonResult> Sav ...
- AI 画图真刺激,手把手教你如何用 ComfyUI 来画出刺激的图
目前 AI 绘画领域的产品非常多,比如 Midjourney.Dalle3.Stability AI 等等,这些产品大体上可以分为两类: 模型与产品深度融合:比如 Midjourney.Dalle3 ...