下面代码的输出是[[3],[3],[3],[3]].
在我看来它应该是[[0],[1],[2],[3]]集合似乎保留了它的大小,但不是它的元素通过循环.
Set<Set<String>> mySetOfSets = new HashSet<Set<String>>();
mySetOfSets.clear();
Set<String> numbers = new HashSet<String>();
for(int i=0; i<4 ; i++)
{
numbers.clear();
String iAsString = String.valueOf(i);
numbers.add(iAsString);
mySetOfSets.add(numbers);
}
System.out.println( mySetOfSets);
Run Code Online (Sandbox Code Playgroud)
问题是你在中添加了相同的Set<String> numbers变量Set<Set<String>> mySetOfSets.您必须Set<String> numbers在每个循环迭代中创建一个新的实例.
for(int i=0; i<4 ; i++) {
Set<String> numbers = new HashSet<String>();
//rest of your code...
}
Run Code Online (Sandbox Code Playgroud)
在您的代码中应用建议的修补程序之前,您这样做:
Set<String> numbers.numbers.numbers到Set<Set<String>> mySetOfSets.通过在代码中应用建议的修复,现在您正在执行此操作:
Set<String> numbers将与以前的Set<String>实例不同.Set<String>的,没有必要清除它).numbers.numbers到Set<Set<String>> mySetOfSets.