国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

java計算集合對稱差

Aklman / 2331人閱讀

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

本文簡單介紹下計算集合對稱差的幾種方法。

maven
        
            com.google.guava
            guava
            22.0
        
        
            org.apache.commons
            commons-collections4
            4.1
        
對稱差

兩個集合的對稱差是只屬于其中一個集合,而不屬于另一個集合的元素組成的集合。
集合A和B的對稱差通常表示為AΔB,對稱差的符號在有些圖論書籍中也使用符號⊕來表示。例如:集合{1,2,3}和{3,4}的對稱差為{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));
改進

上述的兩個方法都不能標注哪些元素屬于第一個集合,哪個屬于第二個集合,有時候我們又想獲取對稱差的時候順便能夠計算出哪個元素屬于哪個集合,這個時候怎么辦呢,可以模仿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);
    }

實例

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計算集合交差并集

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/70286.html

相關文章

  • 數據結構與算法——常用數據結構及其Java實現

    摘要:亦即總結常見的的數據結構,以及在中相應的實現方法,務求理論與實踐一步總結到位。中,使用鏈表作為其基礎實現。其限制是僅允許在表的一端進行插入和刪除運算。 前言 仿佛一下子,2017年就快過去一半了,研一馬上就要成為過去式了,我打算抓住研一的尾巴,好好梳理一下數據結構與算法,畢竟這些基礎知識是很重要的嘛。所以準備在這里搞一個系列的文章,以期透徹。 本系列將采用Java語言來進行描述。亦即總...

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

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

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

    Set接口 Set是一個不能包含重復元素的Collection,它模擬了數學集抽象,Set接口僅包含從Collection繼承的方法,并添加禁止重復元素的限制,Set還為equals和hashCode操作的行為添加了一個更強的契約,允許Set實例有意義地進行比較,即使它們的實現類型不同,如果兩個Set實例包含相同的元素,則它們是相等的。 Java平臺包含三個通用的Set實現:HashSet、Tre...

    Apollo 評論0 收藏0
  • 黑教小本本---python 基礎數據類型相關整理

    摘要:基礎數據類型版本分為余版本,目前同時發行。對中文支持較差,如果要在程序中使用中文字符或中文變量,則需要在源程序的第一行增加,當然別忘了將源文件保存為字符集。運算符左右兩邊都是布爾值,輸出結果也為 python 基礎數據類型 python版本分為2.0余3.0版本,目前同時發行。以后3.0版本將成為主流地址https://www.python.org/ 編輯器 自帶編輯器IDLE【可...

    CodeSheep 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<