day08

集合

1.集合的由来?
之前的容器: 数组   StringBuilder  StringBuffer

一个集合中可以装不同的数据。

2.ArrayList的添加方法
/*
 * 1.ArrayList 类
 *  构造:  ArrayList()
 *        调用空参构造创建对象:ArrayList al  = new ArrayList();
 * 2.添加方法:
 *  add(E e) 直接给集合中添加元素
 *  add(int index , E e) 在指定所以出添加元素
*/

 3. //static void reverse(List<?> list) //集合反转
    Collections.reverse(al3);   
    for (int i = 0; i < al3.size(); i++) {
        System.err.println(al3.get(i));
    }
public class ArrayListTest {
    public static void main(String[] args) {
         //有黄线(警告:暂时没风险,建议你确定一下,ArrayList容器,只装一种数据类型)
        ArrayList al  = new ArrayList();
        al.add("abc");
        al.add(20);
        al.add(true);
        System.out.println(al); //[abc, 20, true]

        ArrayList<String> al2 = new ArrayList<>();//只要JDK为1.7 后面<>不用写
        al2.add("aaa");
        //al2.add(123);  //报错:只能装String类型
        al2.add("bbb");
        al2.add("ccc");
        al2.add(1, "ooo");
        System.out.println(al2);  
    } 
}

3.增删改查的方法

    import java.util.ArrayList;

    /*
     * 获取元素
     *      public E get(int index):返回指定索引处的元素
     * 集合长度
     *      public int size():返回集合中的元素的个数
     * 删除元素
     *      public boolean remove(Object o):删除指定的元素,返回删除是否成功
     *      public E remove(int index):删除指定索引处的元素,返回被删除的元素
     * 修改元素
     *      public E set(int index,E element):修改指定索引处的元素,返回被修改的元素
     */
    public class ArrayListDemo2 {
        public static void main(String[] args) {
            //创建集合对象
            ArrayList<String> array = new ArrayList<String>();

            //添加元素
            array.add("hello");
            array.add("world");
            array.add("java");

            //public E get(int index):返回指定索引处的元素
            //System.out.println("get:"+array.get(0));
            //System.out.println("get:"+array.get(1));
            //System.out.println("get:"+array.get(2));

            //public int size():返回集合中的元素的个数
            //System.out.println("size:"+array.size());

            //public boolean remove(Object o):删除指定的元素,返回删除是否成功
            //System.out.println("remove:"+array.remove("world"));//true
            //System.out.println("remove:"+array.remove("world"));//false

            //public E remove(int index):删除指定索引处的元素,返回被删除的元素
            //System.out.println("remove:"+array.remove(0));

            //public E set(int index,E element):修改指定索引处的元素,返回被修改的元素
            System.out.println("set:"+array.set(1, "android"));

            //输出
            System.out.println("array:"+array);
        }
    }

  4.集合的遍历
    1)获取长度 int  arraylist.size()
    2) 获取元素 E    get(int index);

    /*
     * ArrayList集合的遍历
     *      通过size()和get()配合实现的
     */
    public class ArrayListDemo3 {
        public static void main(String[] args) {
            //创建集合对象
            ArrayList<String> array = new ArrayList<String>();

            //添加元素
            array.add("hello");
            array.add("world");
            array.add("java");      
            //最标准的用法
            for(int x=0; x<array.size(); x++) {
                String s = array.get(x);
                System.out.println(s);
            }
        }
    }

    5.练习:
     给定一个字符串数组:{“张三丰”,“宋远桥”,“张无忌”,“殷梨亭”“张翠山”,“莫声谷”}
    将数组中的元素添加到集合中
    把所有姓张的人员打印到控制台上

    参考:
    /*
     * 给定一个字符串数组:{“张三丰”,“宋远桥”,“张无忌”,“殷梨亭”,“张翠山”,“莫声谷”},将数组中的元素添加到集合中,并把所有姓张的人员打印到控制台上。
     * 
     * 分析:
     *      A:定义字符串数组
     *      B:创建集合对象
     *      C:遍历字符串数组,获取到每一个字符串元素
     *      D:把获取到的字符串元素添加到集合
     *      E:遍历集合
     *          要判断每一个字符串元素是否以"张"开头,如果是,就输出在控制台
     */
    public class ArrayListTest2 {
        public static void main(String[] args) {
            //定义字符串数组
            String[] strArray = {"张三丰","宋远桥","张无忌","殷梨亭","张翠山","莫声谷"};

            //创建集合对象
            ArrayList<String> array = new ArrayList<String>();

            //遍历字符串数组,获取到每一个字符串元素
            for(int x=0; x<strArray.length; x++) {
                //把获取到的字符串元素添加到集合
                array.add(strArray[x]);
            }

            //遍历集合
            for(int x=0; x<array.size(); x++) {
                String s = array.get(x);
                //要判断每一个字符串元素是否以"张"开头,如果是,就输出在控制台
                if(s.startsWith("张")) {
                    System.out.println(s);
                }
            }
        }
    }

    练习:
    1.自定义一个学生类,学生中有姓名和年龄属性,生成满参构造与空参构造生成属性对应的getter/setter方法
    在测试类中使用满参构造创建三个学生对象,然后将每个学生对象均添加到ArrayList集合中
    遍历这个ArrayList集合,依次打印出每个学生的姓名和年龄



    练习:创建一个集合,存储学生对象,学生对象的数据来自于键盘录入,最后,遍历集合

    public class Student {
        private String name;
        private String age;
        public Student() {

        }
        public Student(String name, String age) {
            this.name = name;
            this.age = age;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getAge() {
            return age;
        }
        public void setAge(String age) {
            this.age = age;
        }
    }


    /*
     * 创建一个集合,存储学生对象,学生对象的数据来自于键盘录入,最后,遍历集合
     * 
     * 注意:为了方便使用,我把学生类中的所有成员定义为String类型
     * 
     * 分析:
     *      A:定义学生类
     *      B:创建集合对象
     *      C:键盘录入数据,创建学生对象,把键盘录入的数据赋值给学生对象的成员变量
     *      D:把学生对象作为元素存储到集合中
     *      E:遍历集合
     * 
     */
    public class StudentDemo {
        public static void main(String[] args) {
            //创建集合对象
            ArrayList<Student> array = new ArrayList<Student>();
            //调用方法
            addStudent(array);
            addStudent(array);
            addStudent(array);
            //遍历集合
            for(int x=0; x<array.size(); x++) {
                Student s = array.get(x);
                System.out.println(s.getName()+"---"+s.getAge());
            }
        }
        public static void addStudent(ArrayList<Student> array) {
            //键盘录入数据,创建学生对象,把键盘录入的数据赋值给学生对象的成员变量
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入学生姓名:");
            String name = sc.nextLine();
            System.out.println("请输入学生年龄:");
            String age = sc.nextLine();
            Student s = new Student(name,age);
            //把对象添加进集合
            array.add(s);
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值