public static void main(String[] args) {
// TODO Auto-generated method stub
Set<Integer> set=new HashSet<Integer>();
List<Set<Integer>>list=new ArrayList<Set<Integer>>();
set.add(1);
set.add(0);
set.add(255);
//List先添加
list.add(set);
//set集合再清空
set.clear();
for(Set<Integer> ss:list) {
for(Integer in:ss) {
System.out.println(in);
}
}
}
先看以上代码,输出为空。why?
原因:原因其实很简单,list集合里存的是set集合的一个引用,若set集合有改变,那么list中对应的也会改变。
改:每次add() 一个new的内存空间,那么之前set的内存空间改变就不影响啦。
public static void main(String[] args) {
// TODO Auto-generated method stub
Set<Integer> set=new HashSet<Integer>();
List<Set<Integer>>list=new ArrayList<Set<Integer>>();
set.add(1);
set.add(0);
set.add(255);
//List,加入一个new的集合
list.add(new HashSet<Integer>(set));
//set集合再清空
set.clear();
for(Set<Integer> ss:list) {
for(Integer in:ss) {
System.out.println(in);
}
}
}