利用java怎么计算一个集合的对称差

  介绍

今天就跟大家聊聊有关利用java怎么计算一个集合的对称差,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

具体方法如下:

 & lt; dependency>
  & lt; groupId> com.google.guava
  & lt; artifactId> guava
  & lt; version> 22.0 & lt;/version>
  & lt;/dependency>
  & lt; dependency>
  & lt; groupId> org.apache.commons
  & lt; artifactId> commons-collections4
  & lt; version> 4.1 & lt;/version>
  & lt;/dependency> 

<强>对称差

两个集合的对称差是只属于其中一个集合,而不属于另一个集合的元素组成的集合。

集合A和B的对称差通常表示为AΔB,对称差的符号在有些图论书籍中也使用符号⊕来表示,例如:集合{1,2,3}和{3、4}的对称差为{1,2,4}。

<强>番石榴

在番石榴里头是用symmetricDifference方法

 Set=new HashSet<祝辞(数组。asList (1, 2, 3, 4));
  Setb=new HashSet<祝辞(数组。asList (3、4、5、6));
  Sets.SetView结果=Sets.symmetricDifference (a, b);
  System.out.println(结果);

<强> collection4

在collection4里头是用分离方法

 Set=new HashSet<祝辞(数组。asList (1、2、5));
  Setb=new HashSet<祝辞(数组。asList(1、2、3);
  SetUtils.SetView结果=SetUtils。分离(a, b);
  assertTrue (result.toSet () .contains (5),,result.toSet () .contains (3)); 

<强>改进

上述的两个方法都不能标注哪些元素属于第一个集合,哪个属于第二个集合,有时候我们又想获取对称差的时候顺便能够计算出哪个元素属于哪个集合,这个时候怎么办呢,可以模仿collection4中的方法来获取:

公共静态& lt; O>Pair比;disjunction2(最终Collection<及# 63;O>延伸;首先,
  最后Collection<及# 63;O>延伸;第二,
  最后Predicatep) {
  最后ListfirstList=first.stream ()
  .filter (e→p.evaluate (e))
  .collect (Collectors.toList ());
  
  最后ListsecondList=second.stream ()
  .filter (e→! firstList.remove (e))
  .collect (Collectors.toList ());
  返回Pair.of (firstList secondList);
  }

实例

最后List第一次=arrays . aslist (“bbb",“ccc",“dddd",“aaa");
  最后List第二个=arrays . aslist (“aaa",“zzz",“ccc");
  System.out.println(分离(第一,第二,TruePredicate.truePredicate ())), 

输出

(bbb, dddd],[打鼾声])

看完上述内容,你们对利用java怎么计算一个集合的对称差有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

利用java怎么计算一个集合的对称差