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集合中的交集、差集、并集、去重并集的更多相关文章

  1. List集合中的交集 并集和差集

    目录 List集合求交集 并集 差集 Set集合 Lambda表达式 List集合求交集 并集 差集 两种方法求集 Set集合 交集 两个集合中有相同的元素 抽取出来的数据就是为交集 @Test pu ...

  2. More is better(hdu 1856 计算并查集集合中元素个数最多的集合)

    More is better Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 327680/102400 K (Java/Others) ...

  3. 使用XtraReport的CalculatedFiled(计算字段)实现RDLC报表中表达式

    DevExpress报表确实强大,花样繁多,眼花缭乱. 这次使用XtraReport开发报表,很多问题在官方的文档中并没有详细的说明,特此记录. 1.XtraReport中FormattingRule ...

  4. PHP的排列组合问题 分别从每一个集合中取出一个元素进行组合,问有多少种组合?

    首先说明这是一个数学的排列组合问题C(m,n) = m!/(n!*(m-n)!) 比如:有集合('粉色','红色','蓝色','黑色'),('38码','39码','40码'),('大号','中号') ...

  5. Java集合中的Map接口

    jdk1.8.0_144 Map是Java三种集合中的一种位于java.util包中,Map作为一个接口存在定义了这种数据结构的一些基础操作,它的最终实现类有很多:HashMap.TreeMap.So ...

  6. Java集合中的AbstractMap抽象类

    jdk1.8.0_144 AbstractMap抽象类实现了一些简单且通用的方法,本身并不难.但在这个方法中有两个方法非常值得关注,keySet和values方法源码的实现可以说是教科书式的典范. 抽 ...

  7. Java集合中的LinkedHashMap类

    jdk1.8.0_144 本文阅读最好先了解HashMap底层,可前往<Java集合中的HashMap类>. LinkedHashMap由于它的插入有序特性,也是一种比较常用的Map集合. ...

  8. List集合中的数据按照某一个属性进行分组

    有的时候,我们需要在java中对集合中的数据进行分组运算.例如:Bill对象有money(float)和type(String)属性,现有个集合List<Bill>,需要按照Bill的ty ...

  9. 为什么你学不会递归?告别递归,谈谈我的一些经验 关于集合中一些常考的知识点总结 .net辗转java系列(一)视野 彻底理解cookie,session,token

    为什么你学不会递归?告别递归,谈谈我的一些经验   可能很多人在大一的时候,就已经接触了递归了,不过,我敢保证很多人初学者刚开始接触递归的时候,是一脸懵逼的,我当初也是,给我的感觉就是,递归太神奇了! ...

  10. 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 ...

随机推荐

  1. console小知识

    console.log(JSON.stringify(object,null,2));

  2. Nokia 5GC 产品概览

    目录 文章目录 目录 Nokia SR OS Nokia NSP NFM-P Nokia 7750 SR-MG 5G User Plane Forwarding Mobile Gateway Non- ...

  3. handsontable有显示值与实际值的下拉框cobbobox扩展

    一.效果与使用 二.代码 /// <reference path="handsontable.full.min.js" /> //封闭在IIFE中 (Handsonta ...

  4. 解决:ModuleNotFoundError: No module named ‘urllib3.packages.six.moves问题

    解决方案: 第一步:把selenium版本降到3.3.1 配合urllib3版本1.26.2使用,成功解决 &在python interpreter安装availablePackages se ...

  5. 启动Django项目的方式

    方式一: python manage.py runserver 方式二: # 加上监听地址和端口 python manage.py runserver 0.0.0.0:8080 方式三: 使用 Pyc ...

  6. 使用Harbor作为Rainbond默认容器镜像仓库,扩展Rainbond镜像管理能力

    Rainbond是一体化的云原生应用管理平台,它提供"以应用为中心"的抽象,使用者不需要学习K8s和容器,平台将K8s和容器封装在内部,这种封装方式能极大提高使用的易用性和安装的便 ...

  7. NOIP模拟81

    T1 语言 解题思路 模拟即可,对于一个合法的句子直接判断每一个前缀和每一个后缀是否是合法的名词词组. 然后枚举动词的位置判断前后两段是否合法就好了. code #include<bits/st ...

  8. css 透明气泡效果

    css body { background:#333333; } .login-card { text-align:center; width:430px; height:430px; margin: ...

  9. Linux扩展篇-shell编程(九)-shell 异常处理

    1.异常退出 ${0}:获取当前脚本的名称 $?:获取函数返回值或者上一个命令的退出状态 set -x:开启debug调试功能 按照目前个人理解,异常分为以下几种情况: 程序处理的异常退出 程序员判断 ...

  10. realtek高清晰音频管理器 WIN10

    在WIN10里已经改名了: Realtek Audio Console . 在安装realtek声卡驱动后,Realtek Audio Console 会自动安装.