用map集合或者list集合存放list集合

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值的结果

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值