成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

java計(jì)算集合對(duì)稱差

Aklman / 2401人閱讀

摘要:序本文簡(jiǎn)單介紹下計(jì)算集合對(duì)稱差的幾種方法。集合和的對(duì)稱差通常表示為,對(duì)稱差的符號(hào)在有些圖論書籍中也使用符號(hào)來表示。例如集合和的對(duì)稱差為。

本文簡(jiǎn)單介紹下計(jì)算集合對(duì)稱差的幾種方法。

maven
        
            com.google.guava
            guava
            22.0
        
        
            org.apache.commons
            commons-collections4
            4.1
        
對(duì)稱差

兩個(gè)集合的對(duì)稱差是只屬于其中一個(gè)集合,而不屬于另一個(gè)集合的元素組成的集合。
集合A和B的對(duì)稱差通常表示為AΔB,對(duì)稱差的符號(hào)在有些圖論書籍中也使用符號(hào)⊕來表示。例如:集合{1,2,3}和{3,4}的對(duì)稱差為{1,2,4}。

guava

在guava里頭是用symmetricDifference方法

        Set a = 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

在collection4里頭是用disjunction方法

        Set 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));
改進(jìn)

上述的兩個(gè)方法都不能標(biāo)注哪些元素屬于第一個(gè)集合,哪個(gè)屬于第二個(gè)集合,有時(shí)候我們又想獲取對(duì)稱差的時(shí)候順便能夠計(jì)算出哪個(gè)元素屬于哪個(gè)集合,這個(gè)時(shí)候怎么辦呢,可以模仿collection4中的方法來獲取:

public static  Pair,Collection> disjunction2(final Collection first,
                                                                    final Collection 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 List first = 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

相關(guān)文章

  • 數(shù)據(jù)結(jié)構(gòu)與算法——常用數(shù)據(jù)結(jié)構(gòu)及其Java實(shí)現(xiàn)

    摘要:亦即總結(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)行描述。亦即總...

    RiverLi 評(píng)論0 收藏0
  • “==”、“equals()”、“hashcode()”之間的秘密

    摘要:它也是用來判斷兩個(gè)對(duì)象是否相等,所以也得分不同的情況來說明。什么是的作用是獲取哈希碼,也稱為散列碼它返回的一個(gè)整數(shù)。這個(gè)哈希碼的作用是確定該對(duì)象在哈希表中的索引位置。它定義在的中,這就意味著中的任何類都包含有函數(shù)。 前言 萬丈高樓平地起,今天的聊點(diǎn)基礎(chǔ)而又經(jīng)常讓人忽視的話題,比如==與equals()區(qū)別?為何當(dāng)我們重寫完equals()后也要有必要去重寫hashcode()呢? .....

    Richard_Gao 評(píng)論0 收藏0
  • Java? 教程(Set接口)

    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...

    Apollo 評(píng)論0 收藏0
  • 黑教小本本---python 基礎(chǔ)數(shù)據(jù)類型相關(guān)整理

    摘要:基礎(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【可...

    CodeSheep 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<