集合Collection的体系结构

集合的体系结构:

    由于不同的数据结构(数据的组织,存储方式),所以java为我们提供了不同的集合。但是不同的集合他们的功能却都是相似的,不断地向上提取,将共性抽取出来,这就是集合的体系结构形成的原因。

java中的集合类型都是对java.util包中对Collection接口的继承。

Collection中的常用功能(接口)

    Collection是接口,不能实例化,即不能直接new Collection,所以这时便用到了多态,创建对象的时候可以写成Collection c = new ArrayList();父类的引用指向子类对象。

<1>.boolean add (E e):验证是否添加成功

Collection c = new ArrayList();

System.out.println(c.add("hello"));

//true

<2>.void clear():清空集合

c.clear( );

<3>.boolean contains(Object o ):判断集合中是否包含有指定元素

<4>.boolean isEmpty( ):判断是否为空,不为空返回false,为空返回true

<5>.boolean remove(Object o):删除元素

<6>.int size( ):返回集合中元素个数

<7>.Object[ ] toArray():将集合转换成一个Object类型的数组

Object [ ] obj = c.toArray( );

集合的遍历方式:

    a.toArray(),可以把集合转换成数组,然后遍历数组即可。

    b.iterator(),可以返回一个迭代器对象,我们可以通过对象来迭代集合

Interator:可以用于遍历集合

    E next():返回下一个元素

例:创建集合对象 Collection c = new ArrayList( ) ;

                        c.add("hello");

                        c.add("world");

获取迭代器对象

    Interator it = c.iterator( ) ; 

    System.out.println(it.next());

  System.out.println(it.next());

  System.out.println(it.next());

输出结果:hello,world,错误

注意:使用next方法获取一个元素,如果没有元素可以获取,则出现一个异常,那么就要判断是否有元素可以获取,boolean hasNext()就很好的解决了这个问题。如下例:

将代码改写为     while(it.hasNext()){

                        System.out.println(in.next);

}

案例:

    需求:判断集合中是否包含元素java,如果有则添加元素Android

分析:第一个方法就是使用Collection中的contains方法来判断

第二个方法就是使用迭代器遍历集合并与java进行比较,如果有则添加。

迭代器是依赖与集合的,相当于集合的一个副本,当迭代器操作的时候,如果发现和集合不一样,则会抛出异常,解决方案:在使用迭代器进行遍历的时候,使用迭代器本身对象来修改。

迭代器是没有添加方法的,去子类ListInterator中有添加方法,但是Collection获取不到ListInterator对象,但是List可以,所以

//创建List集合对象

List  c= new ArrayList( );

c.add("hello");

c.add("world");

c.add("java");

//获取ListInterator对象

ListInterator lit = c.ListInterator( );

    while(lit.hasNext()){

        String s = (String)lit.next();

        if(s.equals("java")){

            lit.add("Android");

}

}

System.out.println(c);

你可能感兴趣的:(集合Collection的体系结构)