java集合小结(一)Collecotion接口

来源:互联网 发布:树莓派kali linux中文 编辑:程序博客网 时间:2024/05/17 01:17

java集合小结(一)Collection接口

       java中的集合类主要负责保存、盛装其他数据,因此集合类也称容器类。

       java集合类可分为:set、list、map、queue四大体系。其中set代表无序、不可重复的集合;list代表有序、可重复的集合;map代表具有映射关系的集合;queue代表队列集合。

         java集合类主要由两个接口派生:Collection和Map,是集合框架的根接口。下图是其接口、子接口和实现类的继承树关系图:

一、Collection接口

Collection接口是最基本的接口集合,一个Collection代表一组元素。它下面又有两个子接口:List 和 Set

1.Collection定义了集合框架的共性功能(凡是可以操作角标的方法都是该体系特有的方法):

    add(o)添加一个元素;   

    addAll(collection)添加另一个Collection中所有元素;    

    contains(o)是否包含某个元素;

    remove(o)从集合中删除一个元素;

    <boolean>removeAll(collection)移除此 collection中那些也包含在指定 collection中的所有元素;

    <boolean>containsAll()是否包含在里面;如果此 collection包含指定 collection中的所有元素,则返回true

    <boolean>retainAll()交集;仅保留此 collection中那些也包含在指定 collection的元素

    < boolean >isEmpty() 如果此 collection不包含元素,则返回true

     size() 长度

    <void>clear()移除此 collection中的所有元素 

    ToArray() 返回以正确顺序包含列表中的所有元素的数组。

 2.List接口:

    List集合代表一个有序集合。集合中的每个元素都有其对应的顺序索引。Arraylist和vector是list接口的两个典型实现。他们之间的显著区别就是:vector是线性安全的,而arraylist不是,它们两个都是基于数组实现的list类,List还有一个基于链表实现的LinkedList类。

     a. ArrayList 实现了可变大小的数组,所以它的底层的数据结构使用的是数组结构。特点:查询速度很快,但是增删稍慢,并且线程不同步;

     b.Vector:底层也是数组数据结构,它支持线程同步,但由于效率比较低,被ArrayList替代了;

     c.LinkedList 底层使用的链表数据结构。特点:增删速度很快,查询稍慢,线程不同步。它提供了额外的addFirst()、addLast()、removeFirst()、removeLast()等方法,可以在LinkList的首部或尾部进行插入或者删除的操作,这些方法使得LinkList可用作堆栈(stack)或者队列(queue);

    d.List集合特有的迭代器,ListIterator是Iterator的子接口。在迭代时,不可以通过集合对象的方法操作集合中的元素,因为会发生ConcurrentModificationException异常。所以,在迭代器时,只能用迭代器的方法操作元素,可是Iterator方法是有限的,只能对元素进行判断,取出,删除的操作,如果想要其他的操作如添加,修改等,就需要使用其子接口,ListIterator。该接口只能通过List集合的listIterator方法获取。

3.set接口:

   Set集合的功能和Collection是一致的,在set中它里面的元素是无序(存入和取出的顺序不一定一致),元素不可以重复。

   a.HashSet:底层数据结构是哈希表,是线程不安全的,也不支持同步。它不保证集合的迭代顺序;特别是它不保证该顺序恒久不变,允许使用null元素,对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashcode和equals方法。

   b.TreeSet 此类保证排序后的 set 按照升序排列元素,根据使用的构造方法不同,可能会按照元素的自然顺序进行排序或按照在创建set 时所提供的比较器进行排序。<Iterator>iterator() 返回对此 set 中的元素进行迭代的迭代器。