A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

集合
        问:为什么要有集合?
                集合其实也是一个容器,用来存储数据的。
               
                变量:只能存储一个值,当存第二个的时候,会把第一个给覆盖。
                数组:能同时存储多个值,但是长度不能发生改变。
                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

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马