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