集合还有这么优雅的运算法?
前言:在初中數(shù)學(xué),我們也有集合的概念,非但如此,還有集合中的一些運(yùn)算,例如交集、并集、差集等,那么我們java中的集合是否有這樣的運(yùn)算呢?今天我們就一起來(lái)看看!
01
并集
就是將兩個(gè)集合合起來(lái),元素都放在一起,這個(gè)比較簡(jiǎn)單,我們只需要使用集合的addAll方法就可以,代碼如下:
public?static?void?main(String[] args) {//第一個(gè)集合List<String> list1 = new?ArrayList<String>();list1.add("一");list1.add("二");list1.add("三");System.out.println("第一個(gè)集合中的元素:");for?(String str : list1) {System.out.print(str + " ");}//第二個(gè)集合List<String> list2 = new?ArrayList<String>();list2.add("二");list2.add("三");list2.add("四");System.out.println("\n第二個(gè)集合中的元素:");for?(String str : list2) {System.out.print(str + " ");}//集合之間的交集運(yùn)算list1.addAll(list2);System.out.println("\n最后集合中的元素:");for?(String str : list1) {System.out.print(str + " ");}}運(yùn)行結(jié)果:
此時(shí)的list1集合里面不光有原來(lái)的元素,還有l(wèi)ist2的元素。
02
交集
即兩個(gè)集合中都有的元素,一個(gè)有另一個(gè)也有的,代碼如下:(省略聲明和初始化集合的代碼,和第一個(gè)示例一樣)
list1.retainAll(list2);運(yùn)行結(jié)果如下:
很顯然,共同存在的只有“二三”,大家想想,list1中的“一”還在嗎?
03
差集
即在list1中存在的,但是list2中沒(méi)有的元素,代碼如下:(省略聲明和初始化集合的代碼,和第一個(gè)示例一樣)
list1.removeAll(list2);運(yùn)行結(jié)果:
顯然:“一”在list2中是不存在的。原理就是刪除list1中出現(xiàn)在list2中的元素。
04
無(wú)重復(fù)的并集
我們都知道,并集是list1+list2的所有,那如果list1里面有的,list2里面也有,你這一并集,最后的list1集合肯定會(huì)有重復(fù)的元素,那如何實(shí)現(xiàn)不重復(fù)的并集呢?代碼如下:
public?static?void?main(String[] args) {//第一個(gè)集合List<String> list1 = new?ArrayList<String>();list1.add("一");list1.add("二");list1.add("三");System.out.println("第一個(gè)集合中的元素:");for?(String str : list1) {System.out.print(str + " ");}//第二個(gè)集合List<String> list2 = new?ArrayList<String>();list2.add("二");list2.add("三");list2.add("四");System.out.println("\n第二個(gè)集合中的元素:");for?(String str : list2) {System.out.print(str + " ");}//集合之間的交集運(yùn)算list1.removeAll(list2);list1.addAll(list2);System.out.println("\n最后集合中的元素:");for?(String str : list1) {System.out.print(str + " ");}}運(yùn)行結(jié)果:
代碼分析,我們先使用差集,過(guò)濾一下list1中所有在list2中出現(xiàn)的元素,出現(xiàn)了就刪除,也就是remoAll方法調(diào)用完之后,list1中還剩“一”,然后list2中還有“二、三、四”,兩個(gè)一并集,自然結(jié)果就是“一、二、三、四”。
你看看這樣處理集合優(yōu)雅不優(yōu)雅?其實(shí)通常我們遇到類似的需求時(shí),一般都會(huì)拿起來(lái)for循環(huán)就遍歷,操作,這種方法想都不會(huì)想到。
往期精彩
自從有了這款辣椒醬,拌飯?jiān)僖膊挥美细蓩?/p>
2020-10-30
使用相對(duì)長(zhǎng)度單位rem布局網(wǎng)頁(yè)內(nèi)容
2020-11-03
使用相對(duì)長(zhǎng)度單位em布局網(wǎng)頁(yè)內(nèi)容
2020-11-02
binarySearch與IndexOf的那些事兒~
2020-11-01
新機(jī)必裝!那些你不知道的實(shí)用技軟件在這里!文末免費(fèi)獲取
2020-10-31
如何使用bootstrap實(shí)現(xiàn)輪播圖?
2020-10-29
班級(jí)日常分享:一天一瞬間!
2020-10-29
點(diǎn)分享
點(diǎn)點(diǎn)贊
點(diǎn)在看
總結(jié)
以上是生活随笔為你收集整理的集合还有这么优雅的运算法?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 使用相对长度单位rem布局网页内容
- 下一篇: 今天 ,给大家变个魔术!!!