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 ...
随机推荐
- python教程6.4-json序列化
序列化:dumps,编码,将python类型转成json对象 反序列化:loads,解码,将json对象转成python对象 pickle 模块提供了四个功能:dumps.loads.dump.loa ...
- ETSI GS MEC 013,UE 位置 API
目录 文章目录 目录 版本 功能理解 Relation with OMA APIs Relation with OMA API for Zonal Presence Relation with OMA ...
- AIRIOT物联网低代码平台如何配置OPC UA驱动?
AIRIOT物联网低代码平台支持驱动类型丰富,驱动包括但不限于通用驱动信息,无线驱动信息,行业驱动信息及各个厂商驱动.驱动稳定性强,经受住各个大型项目考验,持续稳定运行. AIRIOT物联网低代码平台 ...
- js 数组按指定字段转map-list结构
js 数组按指定字段转map-list结构 背景介绍 在开发过程中经常会出现接口返回整个数组,我们需要将数组进行二次处理,如下格式按照不同功能模块(type)进行数据拆分 原始数据 const lis ...
- Flutter(一):MAC的Flutter安装指南
官网地址 官网: https://flutter.dev Github: https://github.com/flutter/flutter Git的核心分支包括master.dev.stable. ...
- shell脚本入门学习
1 参考 [尚硅谷]Shell脚本从入门到实战_哔哩哔哩_bilibili 本文为上面链接的课程学习记录. 2 基础 shell脚本需要shell解释器进行执行,shell解释器就是一个应用程序,有多 ...
- switch的穿透
// switch 的 穿透 // 什么是switch的穿透 // 如果在 switch 中没有定义break , switch 会从定位的程序,一直执行到所有sw ...
- INFINI Labs 产品更新 | 修复 Easysearch 跨集群复制索引同步问题,Gateway 内存异常增长等问题
INFINI Labs 产品又更新啦~,本次更新主要对 Easysearch.Gateway.Console.Agent 等产品功能进行优化和相关 Bug 修复,解决了内存异常增长等问题,以下是详细说 ...
- 老张,你的服务是不是挂了?论全局 SLI 的重要性
场景再现 你正在午休,正梦见中了彩票,突然收到电话告警,说服务对外接口 95 分位延迟突增,惊出一身冷汗,睡意全无,抓紧打开监控系统,查看服务的 SLI 指标,发现确实有问题,已经持续 1 分钟,这服 ...
- UDP端口探活的那些细节
一 背景 商业客户反馈用categraf的net_response插件配置了udp探测, 遇到报错了,如图 udp是无连接的,无法用建立连接的形式判断端口. 插件最初的设计是需要配置udp的发送字符 ...