(62)集合概括、Collection共性方法

一、为什么出现集合类?
面向对象语言对事物的体现都是对象的形式,所以为了方便对多个对象的操作
就对对象进行存储,集合就是存储对象最常用的一种方式。

二、数组和集合类同是容器,有何不同?
数组虽然也可以存储对象,但是长度是固定的。
数组中可以存储基本数据类型
三、集合类的特点

集合只能存储对象,集合长度是可变的,集合可以存储不同类型的对象

这里写图片描述
四、Collection接口,ArrayList实现了这个接口,下面对Collection中的共性方法进行学习
add方法的参数类型是Object,多态的体现,以便于接收任意类型对象。

集合中存储的都是对象的引用(地址)

这里写图片描述

//创建一个集合容器,使用Collection接口的子类:ArrayList
                ArrayList al=new ArrayList();

                //添加元素
                al.add("java01");//add(Object obj)是obj的原因是:集合元素类型不确定,多态的体现
                al.add("java02");
                al.add("java04");
                al.add("java05");
                //删除元素
                //al.remove("java02");//参数为元素
                al.remove(1);//参数为下标
                //al.clear();清空

                //获取集合长度
                sop(al.size());

                //是否存在某个元素indexOf(Object obj)获得特定元素的下标
                sop("获取java04的集合下标:"+al.indexOf("java04"));
                //sop("集合中包含Java03吗?"+((al.indexOf("java03")!=-1)?true:false));

                //判断是否含某个元素
                sop("该集合中是否含java02:"+al.contains("java02"));

                //判断集合是否为空
                sop("集合为为空?"+al.isEmpty());
                //打印
                sop(al);
    }
    public static void retainAll_method() {
        ArrayList al=new ArrayList();

        al.add("java01");
        al.add("java02");
        al.add("java08");
        al.add("java05");

        ArrayList a2=new ArrayList();
        a2.add("java07");
        a2.add("java08");
        a2.add("java05");
        a2.add("java06");

        //al.retainAll(a2);//求交集,a1中只保留a2有的元素

        al.removeAll(a2);//移除此集合(a1)中那些包含在指定集合(a2)中的元素
        sop("al="+al);
        sop("a2="+a2);
//还有boolean containsAll(Collection c):如果此collection包含指定集合中的元素,返回true
//这些方法的使用方法见Java.util.Collection接口方法

什么是迭代器?
就是集合的取出元素的方式。
就把取出定义在集合的内部,这样取出方式就可以直接访问集合内容的元素,即把取出方式定义成内部类。而每个容器的数据结构不同,那么取出的动作细节也不同,但是都是共性抽取。
共性抽取,说明这些内部类都有一些个规则,这个规则就是Iterator。

如何获取集合中的对象呢?通过一个对外提供的方法iterator();

public static void method_get() {
        ArrayList al=new ArrayList();

        al.add("java01");
        al.add("java02");
        al.add("java04");
        al.add("java05");

        Iterator it=al.iterator();//获取迭代器,用于取出集合中的元素
        while(it.hasNext()) {
            sop(it.next());
        }
        //也可以如下写法
         for(Iterator it1=al.iterator();it1.hasNext();) {
            sop(it1.next());

        }
    }
posted @ 2017-07-15 15:17  测试开发分享站  阅读(102)  评论(0编辑  收藏  举报