摘要:序本文簡(jiǎn)單介紹下計(jì)算集合對(duì)稱差的幾種方法。集合和的對(duì)稱差通常表示為,對(duì)稱差的符號(hào)在有些圖論書籍中也使用符號(hào)來表示。例如集合和的對(duì)稱差為。
序
本文簡(jiǎn)單介紹下計(jì)算集合對(duì)稱差的幾種方法。
maven對(duì)稱差com.google.guava guava 22.0 org.apache.commons commons-collections4 4.1
兩個(gè)集合的對(duì)稱差是只屬于其中一個(gè)集合,而不屬于另一個(gè)集合的元素組成的集合。
集合A和B的對(duì)稱差通常表示為AΔB,對(duì)稱差的符號(hào)在有些圖論書籍中也使用符號(hào)⊕來表示。例如:集合{1,2,3}和{3,4}的對(duì)稱差為{1,2,4}。
在guava里頭是用symmetricDifference方法
Setcollection4a = new HashSet<>(Arrays.asList(1, 2, 3, 4)); Set b = new HashSet<>(Arrays.asList(3, 4, 5, 6)); Sets.SetView result = Sets.symmetricDifference(a,b); System.out.println(result);
在collection4里頭是用disjunction方法
Set改進(jìn)a = new HashSet<>(Arrays.asList(1, 2, 5)); Set b = new HashSet<>(Arrays.asList(1, 2, 3)); SetUtils.SetView result = SetUtils.disjunction(a, b); assertTrue(result.toSet().contains(5) && result.toSet().contains(3));
上述的兩個(gè)方法都不能標(biāo)注哪些元素屬于第一個(gè)集合,哪個(gè)屬于第二個(gè)集合,有時(shí)候我們又想獲取對(duì)稱差的時(shí)候順便能夠計(jì)算出哪個(gè)元素屬于哪個(gè)集合,這個(gè)時(shí)候怎么辦呢,可以模仿collection4中的方法來獲取:
public staticPair ,Collection > disjunction2(final Collection extends O> first, final Collection extends O> second, final Predicate p) { final List firstList = first.stream() .filter(e -> p.evaluate(e)) .collect(Collectors.toList()); final List secondList = second.stream() .filter(e -> !firstList.remove(e)) .collect(Collectors.toList()); return Pair.of(firstList,secondList); }
實(shí)例
final Listfirst = Arrays.asList("bbb", "ccc","ffffdd","aaa"); final List second = Arrays.asList("aaa", "zzz", "ccc"); System.out.println(disjunction(first,second,TruePredicate.truePredicate()));
輸出
([bbb, ffffdd],[zzz])doc
java計(jì)算集合交差并集
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/70286.html
摘要:亦即總結(jié)常見的的數(shù)據(jù)結(jié)構(gòu),以及在中相應(yīng)的實(shí)現(xiàn)方法,務(wù)求理論與實(shí)踐一步總結(jié)到位。中,使用鏈表作為其基礎(chǔ)實(shí)現(xiàn)。其限制是僅允許在表的一端進(jìn)行插入和刪除運(yùn)算。 前言 仿佛一下子,2017年就快過去一半了,研一馬上就要成為過去式了,我打算抓住研一的尾巴,好好梳理一下數(shù)據(jù)結(jié)構(gòu)與算法,畢竟這些基礎(chǔ)知識(shí)是很重要的嘛。所以準(zhǔn)備在這里搞一個(gè)系列的文章,以期透徹。 本系列將采用Java語言來進(jìn)行描述。亦即總...
摘要:它也是用來判斷兩個(gè)對(duì)象是否相等,所以也得分不同的情況來說明。什么是的作用是獲取哈希碼,也稱為散列碼它返回的一個(gè)整數(shù)。這個(gè)哈希碼的作用是確定該對(duì)象在哈希表中的索引位置。它定義在的中,這就意味著中的任何類都包含有函數(shù)。 前言 萬丈高樓平地起,今天的聊點(diǎn)基礎(chǔ)而又經(jīng)常讓人忽視的話題,比如==與equals()區(qū)別?為何當(dāng)我們重寫完equals()后也要有必要去重寫hashcode()呢? .....
Set接口 Set是一個(gè)不能包含重復(fù)元素的Collection,它模擬了數(shù)學(xué)集抽象,Set接口僅包含從Collection繼承的方法,并添加禁止重復(fù)元素的限制,Set還為equals和hashCode操作的行為添加了一個(gè)更強(qiáng)的契約,允許Set實(shí)例有意義地進(jìn)行比較,即使它們的實(shí)現(xiàn)類型不同,如果兩個(gè)Set實(shí)例包含相同的元素,則它們是相等的。 Java平臺(tái)包含三個(gè)通用的Set實(shí)現(xiàn):HashSet、Tre...
摘要:基礎(chǔ)數(shù)據(jù)類型版本分為余版本,目前同時(shí)發(fā)行。對(duì)中文支持較差,如果要在程序中使用中文字符或中文變量,則需要在源程序的第一行增加,當(dāng)然別忘了將源文件保存為字符集。運(yùn)算符左右兩邊都是布爾值,輸出結(jié)果也為 python 基礎(chǔ)數(shù)據(jù)類型 python版本分為2.0余3.0版本,目前同時(shí)發(fā)行。以后3.0版本將成為主流地址https://www.python.org/ 編輯器 自帶編輯器IDLE【可...
閱讀 3795·2021-11-18 13:20
閱讀 2813·2021-10-15 09:40
閱讀 1972·2021-10-11 10:58
閱讀 2217·2021-09-27 13:36
閱讀 2693·2021-09-07 10:06
閱讀 1950·2021-08-11 11:21
閱讀 1487·2019-08-29 17:04
閱讀 2147·2019-08-29 14:06