Java 集合并交补
示例
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 集合并交补的更多相关文章
- javascript集合的交,并,补,子集,长度,新增,删除,清空等操作
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat=&qu ...
- [java] 求2个集合的交 差 并集
要求2个集合的交 差 并集. set集合,如下 import java.util.HashSet; import java.util.Set; public class SetTest { publi ...
- java 集合交并补
通过使用泛型方法和Set来表达数学中的表达式:集合的交并补.在下面三个方法中都将第一个參数Set复制了一份,并未直接改动參数中Set. package Set; import java.util.Ha ...
- 集合运算 - Java实现集合的交、并、差
1.使用java的Set实现集合的交.并.差 package com.lfy.Set; import java.util.HashSet; import java.util.Set; /** * 集合 ...
- Java 集合系列 12 TreeMap
java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...
- Java 集合深入理解(11):LinkedList
点击查看 Java 集合框架深入理解 系列, - ( ゜- ゜)つロ 乾杯~ 今天心情鱼肚白,来学学 LinkedList 吧! 日常开发中,保存一组数据使用的最多的就是 ArrayList, 其次就 ...
- java集合循环删除
java集合循环删除,java list集合操作,java循环.分享牛,分享牛原创.java集合删除方法. 2.6.1.第一种方式 list.add("1"); list.add( ...
- Java集合框架源码分析(2)LinkedList
链表(LinkedList) 数组(array)和数组列表(ArrayList)都有一个重大的缺陷: 从数组的中间位置删除一个元素要付出很大的代价,因为数组中在被删除元素之后的所有元素都要向数组的前端 ...
- python集合set{ }、集合函数及集合的交、差、并
通过大括号括起来,用逗号分隔元素,特点 1.由不同元素组成,如果定义时存在相同元素,处理时会自动去重 2.无序 3.元素只能是不可变类型,即数字.字符串.布尔和元组,但集合本身可变 4.可直接定义集合 ...
随机推荐
- Codeforces812B Sagheer, the Hausmeister 2017-06-02 20:47 85人阅读 评论(0) 收藏
B. Sagheer, the Hausmeister time limit per test 1 second memory limit per test 256 megabytes input s ...
- user_agent
public function getipinfo($ip) { $res = '其他'; $url = "http://int.dpool.sina.com.cn/iplookup/ipl ...
- SRM473
250pt: 题意:在二维平面上,给定3种,左转.右转,以及前进一步,的指令序列循环执行,问整个移动过程是否是发散的. 思路:直接模拟一个周期,然后判断1.方向是否和初始时不同 2.是否在原来的点 满 ...
- HDU 3078 LCA转RMQ
题意: n个点 m个询问 下面n个数字表示点权值 n-1行给定一棵树 m个询问 k u v k为0时把u点权值改为v 或者问 u-v的路径上 第k大的数 思路: LCA转RMQ求出 LCA(u,v) ...
- 第三天:JavaScript的DOM对象和DOM操作HTML
1. DOM操作HTML 1)注意:绝对不要在文档加载完成之后使用docment.write().这样会覆盖原来的文档 <body> <p>hello</p> &l ...
- Jmeter录制badboy
一般自己手动的设置JMeter会比较麻烦,如果一边操作页面,提交表单,一边能够自动生成JMeter的脚本,则非常方便: BadBoy:录制JMeter脚本: Donwload URL:http://w ...
- [chrome-debug]如何使用chrome调试你的移动设备
### usb debug by remote chrome ### https://developer.chrome.com/devtools/docs/remote-debugging ### c ...
- linux常用命令(二)文件上传下载及软件安装
1.上传下载工具安装 (1)WINDOWS 到linux的文件上传及下载: windows下打开secureCRT,通过SSH连到⾄至远程linux主机:上传下载工具安装命令:yum -y insta ...
- NET npoi帮助类
nuget添加npoi /// <summary> /// npoi帮助类 /// </summary> public static class NpoiHelper { // ...
- WPF 使用 Direct2D1 画图 绘制基本图形
本文来告诉大家如何在 Direct2D1 绘制基本图形,包括线段.矩形.椭圆 本文是一个系列 WPF 使用 Direct2D1 画图入门 WPF 使用 Direct2D1 画图 绘制基本图形 本文的组 ...