想做一个简单的程序,循环判断符合条件的元素插入set,再将set作为<K,V>中的V存入map
但每次循环需要清空set,此时map中指向的地址同时会被清空
set.clear();//存储在map中的数据也会被清空
此时想到将set转为ArrayList再put进map中
List<String> arrayList= new ArrayList<>();
Map<String, List> map = new HashMap<>();
Set<String> set= new HashSet<>();
//将数据存入set
arrayList.addAll(set);
map.put(1,arrayList);
arrayList.clear();//存储在map中的数据也会被清空
看别人的博客了解到List的三种清空方式(原文链接)
1.用list.clear()方法清空list;用此方法,其它引用该list的值也会变成空。
list2 = list;//此时list2有值
list.clear();//先将list赋值给list2,再清空,此时list和list2都为空
2.用list = null来清空list
3.new ArrayList()来清空list
方法1、2都行不通,方法3在效果上可以成功
List<String> arrayList= new ArrayList<>();
Map<String, List> map = new HashMap<>();
Set<String> set= new HashSet<>();
//将数据存入set
arrayList.addAll(set);
map.put(1,arrayList);
arrayList= new ArrayList<>();
此时arrayList可循环保存下一个set的值,并存储在map中
转而尝试使用new HashSet()清空set,仍然不能成功。