博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[改善Java代码]集合运算时使用更优雅的方式
阅读量:4318 次
发布时间:2019-06-06

本文共 1371 字,大约阅读时间需要 4 分钟。

在初中代数中,我们经常会求两个集合的并集、交集、差集等,在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
list1 = new ArrayList
(); 7 list1.add("A"); 8 list1.add("B"); 9 List
list2 = new ArrayList
();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结果,那是差集。

 

转载于:https://www.cnblogs.com/DreamDrive/p/5660165.html

你可能感兴趣的文章
20189222 《网络攻防技术》第一周作业
查看>>
第十二周编程总结
查看>>
数据结构——树——二叉查找树
查看>>
StringBuilder動態串
查看>>
系列文章(二):从WLAN的安全威胁,解析电信诈骗的技术症结——By Me
查看>>
内部类演示
查看>>
多态/接口
查看>>
简单的proxy之TinyHTTPProxy.py
查看>>
正式开张
查看>>
java中的注解
查看>>
日期选择组件(DatePicker)的实现
查看>>
Java 求字符串中出现频率最高字符
查看>>
ARM Cortex-M3 异常优先级以及CMSIS RTOS RTX的中断优先级
查看>>
CodeFirst-Section1之小例子
查看>>
Scikit-learn的kmeans聚类
查看>>
MySQL基础(创建库,创建表,添加数据)
查看>>
git 提交丢失Warning, you are leaving 2 commits behind,
查看>>
3、使用SWFUpload使异异步上传文件
查看>>
HDOJ 2136 Largest prime factor
查看>>
Recommended add-ons/plugins for Microsoft Visual Studio [closed]
查看>>