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(常见的):spa

  LinkList类线程

    实现了List接口,线程不一样步,容许为null的元素。对象

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

  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:

相关文章
相关标签/搜索