当前位置:首页 > Java技术 > Java集合处理: 两个集合去重复、或者交集

Java集合处理: 两个集合去重复、或者交集

2022年08月06日 10:18:11Java技术2



@EqualsAndHashCode(of = "vmId")
public class VirtualMachine {
    @Getter
    @Setter
    private Integer id;
    @Getter
    @Setter
    private String vmName;
    @Getter
    @Setter
    private String userFor;
    @Getter
    @Setter
    private Integer memory;
    @Getter
    @Setter
    private Integer cpu;
    @Getter
    @Setter
    private Integer hardDisk;
    @Getter
    @Setter
    private String templateGuid;
    @Getter
    @Setter
    private String vmId;

法一去重复:利用set的不可以存重复对象,去重复【对象要实现hashcode、equals】

Set set = new HashSet();
for (Object object : virtualMachineList) {
    set.add(object);
}
for (Object object : listVms) {
    set.add(object);
}
System.out.println("***************::" + set.size());

法二去重复:

/**
 * 将列表中重复的虚拟机移除,重复指的是vmId相同
 *
 * @param vmList
 * @return
 */
public ArrayList<VirtualMachine> removeDuplicteVm(List<VirtualMachine> vmList) {
    Set<VirtualMachine> s = new TreeSet<VirtualMachine>(new Comparator<VirtualMachine>() {
        @Override
        public int compare(VirtualMachine o1, VirtualMachine o2) {
            System.out.println(o1.getVmId() + "|" + o2.getVmId());
            String v1 = o1.getVmId() != null ? o1.getVmId() : "0";
            String v2 = o2.getVmId() != null ? o2.getVmId() : "0";
            return v1.compareTo(v2);
        }
    });
    s.addAll(vmList);
    return new ArrayList<VirtualMachine>(s);
}

取交集::::::

使用集合的自带方法,removeAll取交集

virtualMachineList.removeAll(listVms);









作者:[shenhonglei]
来源链接:https://blog.csdn.net/shenhonglei1234/article/details/75223559

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/java/18259.html

标签: Java集合Java
分享给朋友:

“Java集合处理: 两个集合去重复、或者交集” 的相关文章

一分钟搞定Java环境变量配置

一分钟搞定Java环境变量配置

对于学Java的人来说,成功配置环境变量是第一步,因为后期不论 你做什么工作,会发现都需要这些,接下来介绍如何安装与配置,我按照jdk1.6来说明,其他一致。 下载官网 首先将jdk安装好后进行配置。 右击“计算机”,右键打开“属性”,...

两年前写的Java基础总结书

两年前写的Java基础总结书

想法衍生 两年前的我,突发奇想,把自己学的Java基础进行规范化的整理,因为自己的文档编辑能力有限,所以写的排版不是很好,参照图书排版的形式,将书籍进行整理,可以供学习Java基础的朋友参考,由于时间有限,可能也会有问题,请指出。下载地址在最后 截图如下:...

java基础知识讲解(一)数据类型和运算符

java基础知识讲解(一)数据类型和运算符

Java是一种强类型语言,每个变量都必须声明其数据类型。 Java的数据类型可分为两大类:基本数据类型(primitive data type)和引用数据类型(reference data type)。 Java中定义了3类8种基本数据类型 数值型- b...

Java中四种访问修饰符的区别

在java中共有4种访问级别,按访问权限由高到低为:public(公有的)、protected(受保护的)、友好的(没有任何访问权限关键字修饰)和private(私有的)。 类型 类内部 同一个包其...

Java 并发核心机制

Java 并发核心机制

📦 本文以及示例源码已归档在 javacore 一、J.U.C 简介 Java 的 java.util.concurrent 包(简称 J.U.C)中提供了大量并发工具类,是 Java 并发能力的主要体现(注意,不是全部,有部分并发能力的支持在其他包中)。...

Java日志框架那些事儿

Java日志框架那些事儿

在项目开发过程中,我们可以通过 debug 查找问题。而在线上环境我们查找问题只能通过打印日志的方式查找问题。因此对于一个项目而言,日志记录是一个非常重要的问题。因此,如何选择一个合适的日志记录框架也非常重要。在Java开发中,常用的日志记录框架有JDKLog、Log4J、LogBack、SLF4J...

Java实现素数的判断

素数的定义只能被1和它本身整除,不包括1 例 2.3.5.7.11.13 实现代码 Scanner in=new Scanner(System.in); int n ; n=in.nextInt(); for(int n1=2;n1&l...

枚举法 之Java实现凑硬币

问题? 如何利用1元五元十元凑硬币 Scanner in=new Scanner(System.in); int amout ; amout=in.nextInt(); for(int one =0;one<=amout;one+...

二分法(折半查找)的运用之java实现猜数字游戏

让计算机输入一个数 然后用户进行猜数游戏 一般而言,七次会猜对,如果猜不对,那么就是你的方法不对 在这儿涉及到的一个算法就是二分法 ***二分法查找,***也称为折半法,是一种在有序数组中查找特定元素的搜索算法。二分法查找的思路如下: (1)首先,从数组...

java数数字及while和do while 的使用,以及程序的调试与验证

while的条件是在进入循环体之前判断的,执行完一轮循环之后,会再回到循环开始的地方再次判断条件,而不会在循环体中随时判断条件 1.while语句是当条件满足时不断的执行循环体内语句。 2.会提前判断是否满足条件,所以有可能一次也没有执行。 3.条件成立...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。