集合运算时使用更优雅的方式

简介:

在初中代数中,我们经常会求两个集合的并集、交集、差集等,在Java中也存在着此 类运算,那如何实现呢? 一提到此类集合操作,大部分的实现者都会说:对两个集合进行遍历,即可求出结果。是的,遍历可以实现并集、交集、差集等运算,但这不是最优雅的处理方式。下面来看看如何进行更优雅、快速、方便的集合操作。

(1) 并集,(2)交集,(3)差集(补集),(4)无重复并集.

也叫做合集,把两个集合加起来即可,这非常简单,代码如下:

复制代码
 1 import java.util.ArrayList;
 2 import java.util.List;
 3 
 4 public class Client {
 5     public static void main(String[] args) {
 6         List<String> list1 = new ArrayList<String>();
 7         list1.add("A");
 8         list1.add("B");
 9         List<String> list2 = new ArrayList<String>();
10         list2.add("C");
11         list2.add("B");
12         
13         //并集
14         //list1.addAll(list2);//[A, B, C, B]
15 
16         //交集
17         //list1.retainAll(list2);//[B]
18 
19         //补集 list1有,但是list2没有的
20         //list1.removeAll(list2);//[A]
21 
22         /*无重复并集*/
23         //删除在list1中出现的元素
24         list2.removeAll(list1);
25         //把剩余的list2元素加到list1中
26         list1.addAll(list2);
27         System.out.println(list1);    //[A, B, C]
28     }
29 }
复制代码

 为什么介绍并集,交集,差集呢?这是因为如果检查一下嗲吗,就会发现,很少有程序员使用JDK提供的方法来实现这些集合操作.基本上都是采用的标准的嵌套for循环:要并集就是加法,要交集了就使用contains判断是否存在.要差集了就使用!contains(不包含),有时候还要为这类操作提供一个单独的方法,看似很规范,但已经脱离了优雅的味道.

集合的这些操作在持久层中使用得非常频繁,从数据库中取出的就是多个数据集合,之后我们就可以使用集合的各种方法构建我们需要的数据了,需要两个集合的and结果,那是 交集,需要两个集合的or结果,那是并集,需要两个集合的not结果,那是差集。


本文转自SummerChill博客园博客,原文链接:http://www.cnblogs.com/DreamDrive/p/5660165.html,如需转载请自行联系原作者

相关文章
|
5月前
|
存储 开发框架 .NET
C#数据去重的5种方式,你知道几种?
今天我们一起来讨论一下关于C#数据去重的的5种方式,每种方法都有其特点和适用场景,我们根据具体需求选择最合适的方式。当然欢迎你在评论区留下你觉得更好的C#数据去重的方式。
|
5月前
|
开发框架 .NET C#
C#数据去重的这几种方式,你知道几种?
C#数据去重的这几种方式,你知道几种?
|
4月前
|
数据处理 Python
彻底掌握Python集合:无序性、去重神器与高效集合运算指南
彻底掌握Python集合:无序性、去重神器与高效集合运算指南
122 1
|
3月前
|
算法 Python
Python实现求多个集合之间并集的方法
Python实现求多个集合之间并集的方法
36 0
Python实现求多个集合之间并集的方法
|
2月前
|
存储 搜索推荐 Java
|
4月前
|
存储 算法
数据结构学习记录——集合及运算(集合的表示、并查集、树结构表示集合、集合运算、查找函数、并运算)
数据结构学习记录——集合及运算(集合的表示、并查集、树结构表示集合、集合运算、查找函数、并运算)
25 0
|
5月前
|
存储 人机交互 C++
C++实现简易的集合运算
C++实现简易的集合运算
|
SQL
SQL基础——集合运算(下)
SQL基础——集合运算(下)
50 0
|
5月前
|
搜索推荐
排序的概念及其运用
排序的概念及其运用
排序的概念及其运用
|
12月前
|
存储 算法 前端开发
前端算法-两个数组的交集
前端算法-两个数组的交集