您的位置:首页 > 职场人生

黑马程序员-----集合框架总结笔记一

2012-11-03 19:18 351 查看
----------- android培训java培训、java学习型技术博客、期待与您交流! ------------



按照上面的图一一介绍

关于集合的概述

    集合是一个能够存储对象并且可变长度的容器。在Java中,就此需求提供了一套相当完整的容器类库,它们就是集合类。

集合类由于内部数据结构(存储对象的方式)不同,在Java中,将其分为了许多类与接口,它们各司其职。这些集合大体可以分为两类:单列集合与双列集合。单列集合顶层接口是Collection,它又有两个常用的子接口List和Set接口。双列集合的顶层接口是Map,它有两个常用的具体实现类HashMap和TreeMap。

集合中装的数据必须是Object

    集合是一个容器,是用来装数据的,还可以操作数据。

    使用集合的目的是为了对这些数据进行共同的操作或管理 

关于Collection集合

   Collection是单列集合,上图中的虚线框住的都是接口,而实线框住的都是实现类;Collection下面有两个子接口分别是list和set接口;

  Collection——对象之间没有指定的顺序,允许重复元素;

  

方法功能

方法

  功能描述

添加元素

add(Object)

添加一个元素

addAll(Collection)

添加一个Collection集合,将这个集合中的所有元素都添加进来

删除元素

clear()

删除该集合中的所有元素

remove(Object)

删除该集合中指定的元素

removeAll(Collection)

删除指定集合中的所有元素

   

    

     判断元素

isEmpty()

返回boolean,判断该集合是否为空

contains(Object)

返回boolean,判断该集合中是否包含某个元素

containsAll(Collection)

返回boolean,判断该集合中是否包含直接集合中的所有元素

  取出元素

iterator()

返回在该集合的元素上进行迭代的迭代器(Iterator),用于遍历该集合所有元素

      

    其他功能

size()

返回int值,获取该集合元素个数

toArray()

返回包含此 collection 中所有元素的数组

Set——对象之间没有指定的顺序,不允许重复元素;无序(存入和取出顺序有可能不一致),不可以存储重复元素。必须保证元素唯一性。

  List——对象之间有指定的顺序,允许重复元素;有序(元素存入集合的顺序和取出的顺序一致),元素都有索引。

关于List子接口

List本身是Collection接口的子接口,具备了Collection的所有方法。现在学习List体系特有的共性方法,查阅方法发现List的特有方法都有索引,这是该集合最大的特点。

List:有序(元素存入集合的顺序和取出的顺序一致),元素都有索引。元素可以重复。

        |--ArrayList:在ArrayList内部维护了一个数组(可自动扩容),也使得它在随机查询元素的速度很快,而在指定位置插入和删除元素的速度稍慢。因为数组中都是有数字索引与元素一一对应的,根据每个元素的数字索引就可以很快的获得对应位置上的元素,而在指定的索引位置插入元素后,会将此索引位置之后的所有元素相应的向后移动一位。删除会同时向前移动一位。这样就导致了在指定位置插入和删除元素的速度稍慢。正如前边提到的,在ArrayList提供了 ,线程不同步。       

      |--LinkedList:底层的数据结构是双向链表结构,线程不同步,增删元素的速度非常快。

        |--Vector:底层的数据结构就是数组,线程同步的,Vector无论查询和增删都巨慢。

关于Set子接口

    Set集合与之前介绍的List集合一样,也是单列集合的一个重要分支。Set接口是一个不包含重复元素并且无序(存储和取出的顺序)的Collection。

   Set接口中并没有额外增加方法(它的所有方法都是从Collection接口继承而来),Set接口也有两个常用实现类:HashSet和TreeSet。

   |--HashSet:底层数据结构是哈希表,线程是不同步的。无序,高效;

    HashSet集合保证元素唯一性:通过元素的hashCode方法,和equals方法完成的。

            当元素的hashCode值相同时,才继续判断元素的equals是否为true。

            如果为true,那么视为相同元素,不存。如果为false,那么存储。

            如果hashCode值不同,那么不判断equals,从而提高对象比较的速度。

   |--LinkedHashSet:有序,hashset的子类。

  |--TreeSet:TreeSet是一个内部为二叉树结构的Set接口实现类。当元素存入TreeSet时,会按照自然顺序进行排序。线程不同步。

对于ArrayList集合,判断元素是否存在,或者删元素底层依据都是equals方法。

对于HashSet集合,判断元素是否存在,或者删除元素,底层依据的是hashCode方法和equals方法。

Map集合:

  |--Hashtable:底层是哈希表数据结构,是线程同步的。不可以存储null键,null值。

  |--HashMap:底层是哈希表数据结构,是线程不同步的。可以存储null键,null值。替代了Hashtable。存取速度快,通过HashSet中的算法保证键的唯一性。

 |--TreeMap:底层是二叉树结构,可以对map集合中的键进行指定顺序的排序。

Map集合存储和Collection有着很大不同:

 Collection一次存一个元素;Map一次存一对元素。

 Collection是单列集合;Map是双列集合。

 Map中的存储的一对元素:一个是键,一个是值,键与值之间有对应(映射)关系。

  特点:要保证map集合中键的唯一性。

----------- android培训java培训、java学习型技术博客、期待与您交流! ------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: