黑马程序员技术交流社区

标题: Java基础——集合(1) [打印本页]

作者: Dana-乌拉拉    时间: 2014-11-24 17:31
标题: Java基础——集合(1)
本帖最后由 Dana-乌拉拉 于 2014-11-24 17:34 编辑

前言:我也是一位准备去黑马学习的准学员。最近也是“头悬梁,锥刺股”的对着电脑屏幕虔诚的学习着老毕的Java基础课程。说心里话,老毕的课程知识量确实不小,必须做到屏蔽周围干扰才能认认真真的学好这个课程。

    然而在下愚见。老毕的课程中关于包装类和集合的这块知识是讲的比较快的。可能是因为老毕觉得这块大都是一些记忆的东西,所以速度快了些。然而再往后的学习中,集合和String类中的方法是经常遇到的。所以,小弟特在此奉上关于这块知识的帖子,大家这块薄弱的可以参考之。
------------------------------------------------------------------------------------------------------------------------------------------------------------------

第一讲    集合框架

先看下面的图:

这就是集合框架的构成。由于数据结构的不同,有不同的集合,也叫容器。下面是集合类的简单介绍。

一、为什么出现集合类?

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

二、数组和集合类同是容器,有何不同?

        数组虽然也可以存储对象,但长度是固定的;集合长度是可变的。数组中可以存储基本数据类型,集合只能存储对象。

三、集合类的特点

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

第二讲     Collection

        Collection是集合框架中的常用接口。其下有两个子接口:List(列表),Set(集)。

       所属关系:

            Collection

                     |--List//元素是有序的,元素可以重复。因为该集合体系有索引。

                     |--Set//元素是无序的,元素不可以重复。

一、Collection接口中的常见操作

1、添加元素

        add(Objectobj); //add方法的参数类型是Object。以便于接收任意类型对象。

2、删除元素

        remove(Objectobj);

        removeAll(另一集合);//调用者只保留另一集合中没有的元素。

        clear();//清空集合

3、判断元素

        contains(Objectobj);//判断是否存在obj这个元素

        isEmpty();//是否为空

4、获取个数,集合长度

        size();

5、取交集

        retainAll(另一集合);//调用者只保留两集合的共性元素。

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

二、迭代

1、概述

        迭代是取出集合中元素的一种方式。

        对于集合的元素取出这个动作:

        当不足以用一个函数来描述,需要用多个功能来体现,所以就将取出这个动作封装成一个对象来描述。就把取出方式定义在集合的内部,这样取出方式就可以直接访问集合内部的元素。那么取出方式就被定义成了内部类。

        而每一个容器的数据结构不同,所以取出的动作细节也不一样。但是都具有共性内容: 判断和取出。那么就可以将这些共性抽取。

         那么这些内部类都符合一个规则(或者说都抽取出来一个规则)。该规则就是Iterator。通过一个对外提供的方法:iterator();,来获取集合的取出对象。

         因为Collection中有iterator方法,所以每一个子类集合对象都具备迭代器。

2、迭代的常见操作

        hasNext();//有下一个元素,返回真

        next();//取出下一个元素

        remove();//移除

注:在迭代时循环中next调用一次,就要hasNext判断一次。

使用:

         ArrayList a=newArrayList();//创建一个集合

        Iteratorit=a.iterator();//获取一个迭代器,用于取出集合中的元素。

        第一种打印方式:

                for(Iterator iter = a.iterator();iter.hasNext();  )

                {

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

                }

       第二种打印方式:

                 Iteratoriter = a.iterator();

                while(iter.hasNext())

               {

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

               }

3、迭代注意事项




作者: 斷灬dian    时间: 2014-12-25 12:10
顶一个。。。。。。。。。。。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2