Java 集合框架总述


集合框架
集合也就是用于储存数据的容器。主要用于"替代"对象个数不确定的数组。
集合用于存储对象,集合区别于数组,原因是集合长度可变。
集合容器有多种,因为容器自身特点不同,内部数据结构不同,形成了容器的体系。
1,集合框架体系:

如图:
  Java集合主要分为:Collection,map接口。
  Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。
  Map没有继承Collection接口,Map提供key到value的映射。一个Map中不能包含相同的key,每个key只能映射一个value。
2,数组和集合的区别

   数组既可以存储基本数据类型,又可以存储引用数据类型,基本数据类型存储的是值,引用数据类型存储的是地址值
   集合只能存储引用数据类型(对象)集合中也可以存储基本数据类型,但是在存储的时候会自动装箱变成对象
   数组长度是固定的,不能自动增长。
   集合的长度的是可变的,可以根据元素的增加而增长。

3,接口与他的子接口们

Collection接口有List和Set两个子接口。

 

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

 

    |-- Set:无序(存入和取出顺序有可能不一致),不可以存储重复元素。必须保证元素唯一性。

 

List(常见的):

  LinkList类

    实现了List接口,线程不同步,允许为null的元素。

    LinkedList提供额外的get,remove,insert方法在LinkedList的首部或尾部。这些操作使LinkedList可被用作堆栈(stack),队列(queue)或双向队列(deque)。

  ArrayList类

    ArrayList实现了可变大小的数组,线程不同步。它允许所有元素,包括null。

    随着不断添加新元素可自动增加,但是增长算法没有定义。需要插入大量元素时,在插入前可以调用ensureCapacity方法增加ArrayList的容量以提高插入效率。

  Vector类

    Vector非常类似ArrayList,但是Vector是线程同步的。

  Stack类

    Stack继承自Vector,实现一个后进先出的堆栈。Stack提供5个额外的方法使得Vector得以被当作堆栈使用。

    基本的push和pop方法,还有peek方法得到栈顶的元素,empty方法测试堆栈是否为空,search方法检测一个元素在堆栈中的位置。Stack刚创建后是空栈。

Set(常见的):

  set是一种不包含重复的元素的Collection,即任意的两个元素e1和e2都有e1.equals(e2)=false,Set最多有一个null元素。

Map(常见的):

  HashTable:

    Hashtable继承Map接口,是线程同步的,实现一个key-value映射的哈希表。任何非空(non-null)的对象都可作为key或者value。

    注:如果相同的对象有不同的hashCode,对哈希表的操作会出现意想不到的结果(期待的get方法返回null),要避免这种问题:要同时复写equals方法和hashCode方法,而不要只写其中一个。

    HashMap:

    HashMap和Hashtable类似,不同之处在于HashMap是非同步的,并且允许null,即null value和null key。,

  HashSet:

 

posted @ 2018-05-07 19:01  H+  阅读(268)  评论(0编辑  收藏  举报