一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java計算集合對稱差的示例代碼

java計算集合對稱差的示例代碼

2020-12-24 13:31xixicat Java教程

本篇文章主要介紹了java計算集合對稱差的示例代碼,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

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

maven

?
1
2
3
4
5
6
7
8
9
10
<dependency>
  <groupId>com.google.guava</groupId>
  <artifactId>guava</artifactId>
  <version>22.0</version>
</dependency>
<dependency>
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-collections4</artifactId>
  <version>4.1</version>
</dependency>

對稱差

兩個集合的對稱差是只屬于其中一個集合,而不屬于另一個集合的元素組成的集合。

集合A和B的對稱差通常表示為AΔB,對稱差的符號在有些圖論書籍中也使用符號⊕來表示。例如:集合{1,2,3}和{3,4}的對稱差為{1,2,4}。

guava

在guava里頭是用symmetricDifference方法

java" id="highlighter_797786">
?
1
2
3
4
Set<Integer> a = new HashSet<>(Arrays.asList(1, 2, 3, 4));
Set<Integer> b = new HashSet<>(Arrays.asList(3, 4, 5, 6));
Sets.SetView<Integer> result = Sets.symmetricDifference(a,b);
System.out.println(result);

collection4

在collection4里頭是用disjunction方法

?
1
2
3
4
Set<Integer> a = new HashSet<>(Arrays.asList(1, 2, 5));
Set<Integer> b = new HashSet<>(Arrays.asList(1, 2, 3));
SetUtils.SetView<Integer> result = SetUtils.disjunction(a, b);
assertTrue(result.toSet().contains(5) && result.toSet().contains(3));

改進

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

?
1
2
3
4
5
6
7
8
9
10
11
12
public static <O> Pair<Collection<O>,Collection<O>> disjunction2(final Collection<? extends O> first,
                                  final Collection<? extends O> second,
                                  final Predicate<O> p) {
    final List<O> firstList = first.stream()
        .filter(e -> p.evaluate(e))
        .collect(Collectors.toList());
 
    final List<O> secondList = second.stream()
        .filter(e -> !firstList.remove(e))
        .collect(Collectors.toList());
    return Pair.of(firstList,secondList);
  }

實例

?
1
2
3
final List<String> first = Arrays.asList("bbb", "ccc","dddd","aaa");
final List<String> second = Arrays.asList("aaa", "zzz", "ccc");
System.out.println(disjunction(first,second,TruePredicate.truePredicate()));

輸出

([bbb, dddd],[zzz])

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://segmentfault.com/a/1190000010954970

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产亚洲精品视频中文字幕 | 嫩草影院永久入口在线观看 | 日本丰满www色 | 午夜理论片日本中文在线 | 扒开腿开嫩苞 | 亚洲高清国产拍精品动图 | 日本人添下面的全过程 | 婷婷综合七月激情啪啪 | 深夜在线网址 | 国产在线视频在线观看 | 亚洲人成综合在线播放 | 楚乔传第二部全60集免费观看 | 加勒比伊人 | 国产一区二区三区水野朝阳 | 欧美日本一本线在线观看 | 国产在线综合网 | 好男人资源免费播放 | 欧洲女同同性videos0 | 欧美一级专区免费大片俄罗斯 | 丁香六月色婷婷综合网 | 亚裔aⅴ艳星katsuni | 成人国产在线视频 | 91精品国产综合久久 | 人人擦| 99影视在线视频免费观看 | 国产精品亚洲午夜不卡 | 久久精品国产亚洲AV麻豆欧美玲 | 841995论坛网站2022年 | 国产免费小视频在线观看 | 色综合天天综合 | 青青草在线播放 | 五月色综合婷婷综合俺来也 | 国产精品视频免费视频 | 日本道在线播放 | 波多野结衣被绝伦强在线观看 | 人人爱天天做夜夜爽88 | 日本在线小视频 | 香蕉成人国产精品免费看网站 | 97就去干| ass性强迫rape| 日日本老女人 |