gpt4 book ai didi

java - 访问 HashSet 的 HashSet 的元素

转载 作者:行者123 更新时间:2023-12-01 11:59:03 28 4
gpt4 key购买 nike

我创建了一个 HashSet 的 HashSet。我想访问子集中的整数值。我的 HashSet 的 HashSet 是包含 Set 的所有子集的集合,如下所示:-

[[], [1], [2], [1, 2], [3], [1, 3], [4], [1, 4], [2, 3], [1, 2, 3], [2, 4], [3,4], [1, 2, 4], [1, 3, 4], [2, 3, 4], [1, 2, 3, 4] ].

enter code here

代码如下所示:

public class Subsets {
public static void main(String[] args){
Set<Set<Integer>> subsets1 = new HashSet<Set<Integer>>();
Set<Integer> mySet = new HashSet<Integer>();
mySet.add(1);
mySet.add(2);
mySet.add(3);
subsets1 = powerSet(mySet);
}
public static <E> Set<Set<E>> powerSet(Set<E> originalSet) {
Set<Set<E>> sets = new HashSet<Set<E>>();
if (originalSet.isEmpty()) {
sets.add(new HashSet<E>());
return sets;

}
List<E> list = new ArrayList<E>(originalSet);
E head = list.get(0);
Set<E> rest = new HashSet<E>(list.subList(1, list.size()));
for (Set<E> set : powerSet(rest)) {
Set<E> newSet = new HashSet<E>();
newSet.add(head);
newSet.addAll(set);
sets.add(newSet);
sets.add(set);
}
return sets;
}
}

最佳答案

如果您使用的是 java8,您可以使用 forEach获取嵌套 Set<Integer> 的方法并再次调用forEach获取基础整数值。

内联代码示例到 syso 所有整数值:

subsets1.forEach(s -> s.forEach(s2 -> System.out.println(String.valueOf(s2))));

多行代码示例执行更合格的操作:

subsets1.forEach(s -> {
System.out.println("New set: ");
s.forEach(s2 -> {
System.out.println(String.valueOf(s2));
});
});

这将根据您给定的示例生成以下输出:

New set: 
New set:
1
New set:
2
New set:
1
2
New set:
3
New set:
1
3
New set:
2
3
New set:
1
2
3

这是您要找的吗?

作为非 java8 用户,您可以循环遍历包含整数值的集合:

for(Set<Integer> set : subsets1)
{
for(Integer i : set)
{
System.out.println(i);
}
}

谨慎使用intInteger在嵌套循环中,自动装箱/自动拆箱可能会在运行时导致巨大的性能问题。

关于java - 访问 HashSet 的 HashSet 的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28124717/

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