1.用list集合存放list
注意:
在每一次往List<List>中添加list时,都应该重新在内存中开辟一个list空间便于给存放新的数据到list中
List<List>存放list类型的数据要使用用add(int i,list)方法而不是add(list),这样的话在每次new一个list集合时,List<List>都只存放一个数据,之前的list数据会被覆盖(还是list在开辟的内存中指向的问题),只输出最后一次循环的数据。所以要规定每次这个数据要存放到哪里,使用add(int i,list)方法。
要给list存放数据时,每次都要new一个list,不new的话list在内存中只开辟一个list对象,每次往里面存放数据时,list都指向这一个对象。所以要达到每次循环都有不一样的list时,在循环下面重新在内存中开辟新的list
public static void main(String[] args) {
List<List<User>> list = new ArrayList<>();
for (int i = 0; i < 2; i++) {
List<User> list1 = new ArrayList<>();
list1.add(new User("1","zhangsan"));
list1.add(new User("2","lisi"));
list1.add(new User("3","wangwu"));
list.add(list1);
}
System.out.println("list: "+list);
}
运行结果
不能写成这样
public static void main(String[] args) {
List<List<User>> list = new ArrayList<>();
List<User> list1 = new ArrayList<>();
for (int i = 0; i < 2; i++) {
list1.add(new User("1","zhangsan"));
list1.add(new User("2","lisi"));
list1.add(new User("3","wangwu"));
list.add(list1);
}
System.out.println("list: "+list);
}
否则结果为:
则会出现以上问题,每次按照定义的循环add完之后才能添加(会导致重复数据)
2.用map集合存储list
//当添加多个值的时候:
public static void main(String[] args) {
List<List<User>> list = new ArrayList<>();
Map<String,List<User>> map = new HashMap<>();
for (int i = 0; i < 2; i++) {
List<User> list2 = new ArrayList<>();
list2.add(new User("1","zhangsan"));
list2.add(new User("2","lisi"));
list2.add(new User("3","wangwu"));
map.put("list"+i,list2);
}
}
//当添加一个list集合时:
public static void main(String[] args) {
List<List<User>> list = new ArrayList<>();
Map<String,List<User>> map = new HashMap<>();
List<User> list2 = new ArrayList<>();
list2.add(new User("1","zhangsan"));
list2.add(new User("2","lisi"));
list2.add(new User("3","wangwu"));
map.put("list"+i,list2);
}
多个list值的结果
一个list值的结果