黑马程序员技术交流社区

标题: 多线程 [打印本页]

作者: kaka3208c    时间: 2016-10-8 21:58
标题: 多线程
package com.heima.collection;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class Test012 {

        public static void main(String[] args) {
                List<ArrayList<Integer>> list = new ArrayList<>();        //创建集合
                ArrayList<Integer> alist = new ArrayList<>();                //创建集合
                Random r = new Random();                                                       
                for(int i = 0; i < 100; i++){       
                        alist.clear();                                                                        //清空集合alist
                        int num = r.nextInt(100) + 1;                                        //num为100-1的随机数
                        alist.add(num);                                                                        //向集合alist中添加元素               
                        System.out.println(alist);                                                //打印集合alist
                        list.add(alist);                                                                //向集合list中添加集合元素alist
               
                }
                System.out.println(list);                            //打印集合list                        
        }

}
请问下运行后list的结果为什么是都是同一个数?
作者: zhoubinjian    时间: 2016-10-9 15:16
因为你list里面存的都是同一个对象 ,不管对象 里面存放了多少的integer,打印出来的对象 都是同一个。
作者: kaka3208c    时间: 2016-10-9 16:30
zhoubinjian 发表于 2016-10-9 15:16
因为你list里面存的都是同一个对象 ,不管对象 里面存放了多少的integer,打印出来的对象 都是同一个。 ...

请问下怎么修改才可以将alist集合中的数据依次存进list集合中?谢谢
作者: zhoubinjian    时间: 2016-10-9 17:17
kaka3208c 发表于 2016-10-9 16:30
请问下怎么修改才可以将alist集合中的数据依次存进list集合中?谢谢

把new对象放到for循环里面来,这样每一次循环都是new一个对象,,
作者: kaka3208c    时间: 2016-10-9 18:54
zhoubinjian 发表于 2016-10-9 17:17
把new对象放到for循环里面来,这样每一次循环都是new一个对象,,

太感谢了!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2