gpt4 book ai didi

java - Java 中集合的并集和交集(生成拓扑)

转载 作者:行者123 更新时间:2023-11-30 06:46:14 26 4
gpt4 key购买 nike

我正在尝试测试一个可能的拓扑,它是一组开集。为此,我需要找到集合的并集和交集。这样做我可以创建一个 Generated Topology 。我认为我能找到的最好的方法,至少不需要使用外部库 - 似乎 Google 有一个具有 Multiset 功能的 Guava 库,就是执行诸如 following 之类的操作。 (最后一个答案):

Set<Set<String>> myCollection = new HashSet<>();

当我可以以某种方式循环并将集合添加到“myCollection”时,我不知道是否值得尝试学习 Multiset 的各种方法。关于使用 Multiset 或 Bag 等东西的真正好处有什么建议吗?

更具体地说,我会有一组子集(超集),例如 {{A,B,D}, {B,C}},我们可以看到 {A ,B,D} U {B,C} = {A,B,C,D}${A,B,D} ∩ {B,C} = {B}$ code> 因此是 {{A,B,D}, {B,C}, {B}, {A,B,C,D}} 的新超集。 超集不会变得非常大,最多可能有几十个元素。

最佳答案

当您需要一个可以包含多个相同元素的Set时,Multiset非常有用(因为一个Set只能容纳一个每个元素)。

如果您正在寻找多个 Set 的并集或交集,那么我确实建议使用 Google 的 Guava 库,因为它具有以下方法在 Sets.java 中对您有用:

static <E> Sets.SetView<E> union(Set<? extends E> set1, Set<? extends E> set2)
static <E> Sets.SetView<E> intersection(Set<E> set1, Set<?> set2)

如果您不想使用 Guava,那么有一些方法可以在 Java 中找到两个集合的并集和交集:

Set<Integer> first = new HashSet<>(Arrays.asList(1, 3, 5, 7));
Set<Integer> second = new HashSet<>(Arrays.asList(2, 4, 6, 8));

// Creates a new Set as a copy of 'first' and then adds every element from 'second' into the new Set, creating a union.
Set<Integer> union = new HashSet<>(first);

union.addAll(second);

System.out.println(union);

>> {1, 2, 3, 4, 5, 6, 7, 8}

// Creates a new Set as a copy of 'first' and then removes every element from the new Set that is not contained within 'second', creating an intersection.
Set<Integer> intersection = new HashSet<>(first);

intersection.retainAll(second);

System.out.println(intersection);

>> {}

关于java - Java 中集合的并集和交集(生成拓扑),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43646394/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com