示例

package com.example;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List; public class ListOpt {
private List intersect(List ls1, List ls2) {
List list = new ArrayList(Arrays.asList(new Object[ls1.size()]));
Collections.copy(list, ls1);
list.retainAll(ls2);
return list;
} private List union(List ls1, List ls2) {
List list = new ArrayList(Arrays.asList(new Object[ls1.size()]));
Collections.copy(list, ls1);
list.addAll(ls2);
return list;
} private List diff(List ls1, List ls2) {
List list = new ArrayList(Arrays.asList(new Object[ls1.size()]));
Collections.copy(list, ls1);
list.removeAll(ls2);
return list;
} public static void main(String[] args) {
List<Integer> l1 = new ArrayList<Integer>() {{
add(1);
add(2);
add(3);
}};
List<Integer> l2 = new ArrayList<Integer>() {{
add(2);
add(3);
add(4);
}}; ListOpt opt = new ListOpt();
List intersectList = opt.intersect(l1, l2);
List union = opt.union(l1, l2);
List diff = opt.diff(l1, l2); print(intersectList);
print(union);
print(diff); } private static void print(List lst) {
if (lst.size() == 0) {
return;
}
for (int i = 0; i <lst.size(); ++i) {
System.out.println(lst.get(i));
}
System.out.println("---");
}
}

输出

2
3
---
1
2
3
2
3
4
---
1
---

在操作之前对原对象进行了拷贝,如果对原对象直接操作会修改原来的对象

另一种写法

/**
* Created by yuhui on 2017/7/11 0011.
*/
import java.util.HashSet;
import java.util.Set; public class TestSet { public static void main(String[] args) { Set<String> result = new HashSet<String>();
Set<String> set1 = new HashSet<String>() {
{
add("王者荣耀");
add("英雄联盟");
add("穿越火线");
add("地下城与勇士");
}
}; Set<String> set2 = new HashSet<String>() {
{
add("王者荣耀");
add("地下城与勇士");
add("魔兽世界");
}
}; result.clear();
result.addAll(set1);
result.retainAll(set2);
System.out.println("交集:" + result); result.clear();
result.addAll(set1);
result.removeAll(set2);
System.out.println("差集:" + result); result.clear();
result.addAll(set1);
result.addAll(set2);
System.out.println("并集:" + result); } }

Java 集合并交补的更多相关文章

  1. javascript集合的交,并,补,子集,长度,新增,删除,清空等操作

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat=&qu ...

  2. [java] 求2个集合的交 差 并集

    要求2个集合的交 差 并集. set集合,如下 import java.util.HashSet; import java.util.Set; public class SetTest { publi ...

  3. java 集合交并补

    通过使用泛型方法和Set来表达数学中的表达式:集合的交并补.在下面三个方法中都将第一个參数Set复制了一份,并未直接改动參数中Set. package Set; import java.util.Ha ...

  4. 集合运算 - Java实现集合的交、并、差

    1.使用java的Set实现集合的交.并.差 package com.lfy.Set; import java.util.HashSet; import java.util.Set; /** * 集合 ...

  5. Java 集合系列 12 TreeMap

    java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...

  6. Java 集合深入理解(11):LinkedList

    点击查看 Java 集合框架深入理解 系列, - ( ゜- ゜)つロ 乾杯~ 今天心情鱼肚白,来学学 LinkedList 吧! 日常开发中,保存一组数据使用的最多的就是 ArrayList, 其次就 ...

  7. java集合循环删除

    java集合循环删除,java list集合操作,java循环.分享牛,分享牛原创.java集合删除方法. 2.6.1.第一种方式 list.add("1"); list.add( ...

  8. Java集合框架源码分析(2)LinkedList

    链表(LinkedList) 数组(array)和数组列表(ArrayList)都有一个重大的缺陷: 从数组的中间位置删除一个元素要付出很大的代价,因为数组中在被删除元素之后的所有元素都要向数组的前端 ...

  9. python集合set{ }、集合函数及集合的交、差、并

    通过大括号括起来,用逗号分隔元素,特点 1.由不同元素组成,如果定义时存在相同元素,处理时会自动去重 2.无序 3.元素只能是不可变类型,即数字.字符串.布尔和元组,但集合本身可变 4.可直接定义集合 ...

随机推荐

  1. Lambda架构

    转载:https://blog.csdn.net/brucesea/article/details/45937875 1.Lambda架构背景介绍 Lambda架构是由Storm的作者Nathan M ...

  2. Delphi 内进行音量控制及静音

    unit UMute; interface uses MMSystem, Dialogs; Type   TDeviceName = (Master, Microphone, WaveOut, Syn ...

  3. 集成算法(chapter 7 - Hands on machine learning with scikit learn and tensorflow)

    Voting classifier 多种分类器分别训练,然后分别对输入(新数据)预测/分类,各个分类器的结果视为投票,投出最终结果: 训练: 投票: 为什么三个臭皮匠顶一个诸葛亮.通过大数定律直观地解 ...

  4. 实验6 LCD接口

    1.利用单片机控制LCD1602,在LCD1602上显示字符串,并使其整屏左移. #include<reg51.h> #define uchar unsigned char #define ...

  5. [leetcode.com]算法题目 - Sort Colors

    Given an array with n objects colored red, white or blue, sort them so that objects of the same colo ...

  6. ASP.NET CORE之上传文件夹

    最近闲余时间在做一个仿百度网盘的项目,其中就有一个上传文件夹的功能.查了下网上好像对这个问题的描述比较少,所以在此记录一下. 1.网上找来找去发现webkitdirectory这个东西,H5的一个新的 ...

  7. OSLab多进程

    日期:2019/3/23 内容:Linux下与多进程相关的函数.     进程基本知识 定义 应用程序关于某数据集合上的一次运行活动. 特点 ·操作系统进行资源分配和调度的基本单位 ·进程是程序的一次 ...

  8. ubuntu14.04 下出现 libmysqlclient.so.20 找不到问题

    解决办法: apt-get install libzdb-dev

  9. PHP中正则表达式函数(Perl兼容)

    PHP为使用Perl兼容的正则表达式搜索字符串提供了7个函数,分别是preg_grep().preg_match().preg_match_all().preg_quote().preg_replac ...

  10. abstract抽象

    abstract:抽象 是用来修饰抽象类和抽象方法的 那么什么抽象,抽象有究竟有什么用呢?? 我们知道,“类”是某一类具有相同特征或行为的物事,是将这些物事特征向上抽取得来的:“父类”也是子类不断向上 ...