首页新闻动态正文

ArrayList集合类【黑马java培训】

更新时间:2019年07月26日 11时11分59秒 来源:黑马程序员论坛

集合
        问:为什么要有集合?
                集合其实也是一个容器,用来存储数据的。
               
                变量:只能存储一个值,当存第二个的时候,会把第一个给覆盖。
                数组:能同时存储多个值,但是长度不能发生改变。
                StringBuilder : 一般只把他当做是String的缓冲区,就是字符串的帮助类。只往StringBuilder里面存储字符串。
                集合:跟数组类似的。
                                能同时存储多个值,但是长度会自动的伸缩。

                简单来说,我们在添加元素或者删除元素的时候,不需要考虑集合的长度,因为他会自动伸缩。



8,集合的特点:
        1.长度可变的。
        2.底层是数组。
                在刚开始创建集合对象的时候
                        a,在底层会先创建一个数组。
                        b,此时往集合中添加数据,其实就是往这个数组中添加数据
                        c,当数组存满了,集合会自动的,再创建一个更长一点的数组,把老数组中的元素添加到新数组中。
                                //注意:这个扩容的过程不需要我们自己实现,是集合帮我们搞定了
                                //      我们只要关心添加的数据即可。
        3.泛型
                就是规定了集合能存储数据的类型。
                int [] arr = new int[3]; //可以得出数组能存int数据类型。
               
                ArrayList list = new ArrayList();//通过集合的创建对象,能不能看出这个集合能存储什么数据类型?
                                                                                //此时是看不出来的,所以我们要明确的规定一下数据类型。
                                                                                //就通过泛型去明确

                改写:
                        ArrayList<String> list = new ArrayList<String>();
                                //此时加了泛型,就表示以后只能往集合中存储这种数据类型。
                在JDK7以后,可以简写:
                        ArrayList<String> list = new ArrayList<>();

9,ArrayList构造,添加
       
        构造:
                ArrayList<String> list = new ArrayList<>();
       
        添加:
                add(元素); //默认将元素添加末尾
                add(索引,元素);//将元素添加到指定的位置,原来位置上的元素往后挪一个位置。



10.集合的遍历
        扩展练习:
                往集合中添加以下的元素:
                        "张三" "李四" "张三丰" "张无忌" "张帅玮" "赵六" "钱七"
                请遍历集合,请将张开头,且名字为3个字的遍历出来。

        代码:
                //"张三" "李四" "张三丰" "张无忌" "张帅玮" "赵六" "钱七"
        //请遍历集合,请将张开头,且名字为3个字的遍历出来。
        ArrayList<String> list = new ArrayList<>();//创建了一个空的集合,里面没有任何元素
        list.add("张三");
        list.add("李四");
        list.add("张三丰");
        list.add("张无忌");
        list.add("张帅玮");
        list.add("赵六");
        list.add("钱七");
        //当代码执行到这里时,所有的数据都已经存储到集合中了。
        for (int i = 0; i < list.size(); i++) {
            String name = list.get(i);//name依次表示集合中的每一个名字
            if(name.startsWith("张") && name.length() == 3){
                System.out.println(name);
            }
        }


11.存储自定义学生对象并进行遍历
                ArrayList<Student> list = new ArrayList<>();
        Student s1 = new Student("张三",23);
        Student s2 = new Student("李四",24);
        Student s3 = new Student("王五",25);

        list.add(s1);
        list.add(s2);
        list.add(s3);

        for (int i = 0; i < list.size(); i++) {
            Student student = list.get(i);
            student.show();
        }
               
       
        扩展练习:
                只要打印年龄大于等于24岁的。
                ArrayList<Student> list = new ArrayList<>();
        Student s1 = new Student("张三",23);
        Student s2 = new Student("李四",24);
        Student s3 = new Student("王五",25);

        list.add(s1);
        list.add(s2);
        list.add(s3);

        for (int i = 0; i < list.size(); i++) {
            Student student = list.get(i);
            //遍历到的当前学生的年龄
            int age = student.getAge();
            if(age >= 24){
                student.show();
            }
        }


12.存储自定义学生对象并进行遍历,数据来自于键盘录入
        思考:
                在javabean类Student类中,name和age都使用的String类型。
                为什么?
                因为如果name是String类型的,age是int类型的。
                那么键盘录入时,就需要用nextLine和nextInt结合的方式了。
                有可能会导致一个小问题。先用nextInt接收数据,再用nextLine接收数据,会导致nextLine接收不到。


        结论:
                在基础班是使用 next 和 nextInt
                //到了就业班学习完了类型的转换再使用nextLine

        如果你想Student类中,姓名用String ,age用int
        那么键盘录入就必须使用 next 和 nextInt

推荐了解热门学科

java培训 Python人工智能 Web前端培训 PHP培训
区块链培训 影视制作培训 C++培训 产品经理培训
UI设计培训 新媒体培训 产品经理培训 Linux运维
大数据培训 智能机器人软件开发




传智播客是一家致力于培养高素质软件开发人才的科技公司“黑马程序员”是传智播客旗下高端IT教育品牌。自“黑马程序员”成立以来,教学研发团队一直致力于打造精品课程资源,不断在产、学、研3个层面创新自己的执教理念与教学方针,并集中“黑马程序员”的优势力量,针对性地出版了计算机系列教材50多册,制作教学视频数+套,发表各类技术文章数百篇。

传智播客从未停止思考

传智播客副总裁毕向东在2019IT培训行业变革大会提到,“传智播客意识到企业的用人需求已经从初级程序员升级到中高级程序员,具备多领域、多行业项目经验的人才成为企业用人的首选。”

中级程序员和初级程序员的差别在哪里?
项目经验。毕向东表示,“中级程序员和初级程序员最大的差别在于中级程序员比初级程序员多了三四年的工作经验,从而多出了更多的项目经验。“为此,传智播客研究院引进曾在知名IT企业如阿里、IBM就职的高级技术专家,集中研发面向中高级程序员的课程,用以满足企业用人需求,尽快补全IT行业所需的人才缺口。

何为中高级程序员课程?

传智播客进行了定义。中高级程序员课程,是在当前主流的初级程序员课程的基础上,增加多领域多行业的含金量项目,从技术的广度和深度上进行拓展“我们希望用5年的时间,打造上百个高含金量的项目,覆盖主流的32个行业。”传智播客课程研发总监于洋表示。




黑马程序员热门视频教程【点击播放】

Python入门教程完整版(懂中文就能学会) 零起点打开Java世界的大门
C++| 匠心之作 从0到1入门学编程 PHP|零基础入门开发者编程核心技术
Web前端入门教程_Web前端html+css+JavaScript 软件测试入门到精通


在线咨询 我要报名
和我们在线交谈!