黑马程序员技术交流社区

标题: Java学习----集合框架学习笔记 [打印本页]

作者: wyw    时间: 2015-4-13 10:59
标题: Java学习----集合框架学习笔记
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方法。

作者: 李永佳    时间: 2015-4-13 11:17
楼主很强悍
作者: 杨大萌    时间: 2015-4-13 11:38
赞一个!
作者: 你好明天    时间: 2015-4-13 20:39
哇 !总结的是不错啊 很清晰
作者: 天空的彩虹    时间: 2015-4-13 21:11
:handshake
作者: nbcallum    时间: 2015-4-13 21:11
谢谢分享~~~学习ing...
作者: 奔放的龙小胖    时间: 2015-4-13 21:13
亲,您总结这个集合框架的笔记,Why!?
作者: 叶松ye    时间: 2015-4-13 21:19
xinku xinku
作者: 徐顺醒    时间: 2015-4-13 21:20
不错 , 怒顶!~~ 加油
作者: 燕赵之风    时间: 2015-4-13 21:26
总结的不错哦。继续!
作者: 郁永鹏    时间: 2015-4-13 21:45
谢谢楼主的分享,




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