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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

Quella

中级黑马

  • 黑马币:

  • 帖子:

  • 精华:

© Quella 中级黑马   /  2015-7-9 22:06  /  382 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

2、数组和集合类同是容器,有何区别?
    2.1 数组虽然也可以存储对象,但长度是固定的;集合长度是可变的。
2.2 数组中可以存储基本数据类型,集合只能存储对象。

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

为什么会出现这么多的容器呢?

因为每一个容器对数据的存储方式都有不同,这个存储方式称之为:数据结构。

Collection接口中的常用子接口List、Set。

List中常用的ArrayList、LinkedList、Vector。

Set中常用的HashSet、TreeSet。

4、方法的使用
        add方法的参数类型是Object。以便于接收任意类型对象。
        集合中存储的都是对象的引用(地址)。
        
        迭代器:
        就是集合的取出元素的方式。
        把取出方式定义在集合的内部,这样出去方式就可以直接访问集合内容的元素,
那么取出方式就被一定成了内部类。
        而每一个容器的数据结构不同,所以取出的动作细节也不一样。但是都有共性内容:判断和取出。那么我们就将这些共性抽取出来。(Iterator)这些内部类都符合一个规则,就是Iterator。 怎么获取集合的取出对象呢? 通过一个对外提供的方法: iterator();
        
Collection
        |----List:元素是有序的,元素可以重复,因为该集合体系有索引。
|----ArrayList        : 底层的数据结构使用的是数组结构。 特点:元素的查询速度很快,但是增删稍慢。线程不同步。
|----LinkedList        : 底层的数据结构是链表数据结构。特点:查询速度慢,但是增删操作快速。
LinkedList 特有方法:
addFirst();  addLast(); 在头/尾增加元素
getFirst();          getLast(); 获取头/尾元素(获取元素但不删除)如果集合中没有元素,会出现NoSuchElementException
removeFirst();  removeLast(); 获取头/尾元素(但是删除元素)。如果集合中没有元素,会出现NoSuchElementException

在JDK1.6出现了代替方法。

offerFirst();  offerLast();
peekFirst();  peekLast();获取头/尾元素(获取元素但不删除)如果集合中没有元素,则返回null。
pollFirst();  pollLast();获取头/尾元素(但是删除元素)。如果集合中没有元素,则返回null。

               
|----Vector        : 底层是数组数据结构。线程同步。被ArrayList替代了。
        |----Set:元素是无序的,元素不可以重复。

List:
        特有方法:凡是可以操作角标的方法都是该体系特有的方法。

        Add(index,element);
        addAll(index,Collection);

        remove(index);

        set(index,element);
查        
        get(index);
subList(from, to);
listIterator();
List集合特有的迭代器。ListIterator是Iterator的子接口。

在迭代时,不可以通过集合对象的方法操作集合中的元素。会发生异常。

所以,在使用迭代器时,只能用迭代器的方法操作元素,可是Iterator方法是有限的,
只能对元素进行判断、取出、删除等操作。
如果想要对其他的操作如:添加、修改等,就需要使用其子接口:ListIterator。该接口只能通过List集合的listiterator方法。

1 个回复

倒序浏览
新手学习,谢谢分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马