📜  设置 powerSet()函数|番石榴 |Java

📅  最后修改于: 2022-05-13 01:55:12.826000             🧑  作者: Mango

设置 powerSet()函数|番石榴 |Java

Guava 的Sets.powerSet()返回集合的所有可能子集的集合。

句法:

public static  
  Set> 
    powerSet(Set set)

这里, set是用来构造幂集的元素集。

返回值:此方法返回幂集,作为不可变集的不可变集。

例外:

  • IllegalArgumentException:如果 set 有超过 30 个唯一元素,因为这会导致幂集大小超出 int 范围。
  • NullPointerException:如果设置为 null 或包含 null。

注:空集的幂集不是空集,而是包含空集的一元集。

示例 1:

// Java code to return the set of
// all possible subsets of a set
  
import com.google.common.collect.Sets;
import java.util.Set;
  
class GFG {
  
    // Driver's code
    public static void main(String[] args)
    {
  
        // Creating a set
        Set
            set = Sets.newHashSet(1, 2, 3);
  
        // powerSet to store all subsets of a set
        Set >
            powerSet = Sets.powerSet(set);
  
        // Displaying all possible subsets of a set
        for (Set s : powerSet)
            System.out.println(s);
    }
}
输出:
[]
[1]
[2]
[1, 2]
[3]
[1, 3]
[2, 3]
[1, 2, 3]

示例 2:

// Java code to return the set of
// all possible subsets of a set
  
import com.google.common.collect.Sets;
import java.util.Set;
  
class GFG {
  
    // Driver's code
    public static void main(String[] args)
    {
        // Creating a set
        Set
            set = Sets.newHashSet("G", "F", "g");
  
        // powerSet to store all subsets of a set
        Set >
            powerSet = Sets.powerSet(set);
  
        // Displaying all possible subsets of a set
        for (Set s : powerSet)
            System.out.println(s);
    }
}
输出:
[]
[F]
[G]
[F, G]
[g]
[F, g]
[G, g]
[F, G, g]

注意:虽然大小为 n 的集合的幂集大小为 2^n,但其内存使用量仅为O(n) 。构造幂集时,仅复制输入集。只有当幂集被迭代时,才会创建单独的子集,而这些子集本身只占用很小的恒定内存量。