java中的集合

一.什么是集合?

 数组,一旦被定义,长度不能变化。

而在实际开发中,我们经常需要保存一些变长的数据集合,需要能动态的保存我们数据。于是就有了集合框架。

二.层次关系

如图所示:图中,实线边框的是实现类,折线边框的是抽象类,而点线边框的是接口

java中的集合

如图:

  • java 中所有的集合类都实现了 Collection接口,它是集合类的根接口
  • Map和collection接口没有直接关系,是相互独立的,但都属于集合类的一部分
  • Iterator所有集合类都实现了这个接口,用于遍历集合中的元素

三.集合中的四大接口

1.List(列表)

主要存储有序的,可重复的数据。List主要关注事物的索引,查询快。

2.Set(集)

存储无序,不可重复的数据。Set主要关注事物的唯一性。

3.Map(映射)

存储键值对,键唯一,值可重复。关注事物的映射和键的唯一性。

4.Queue(队列)

队列是一个典型的先进先出(FIFO)的容器,放入容器的顺序和取出的顺序是相同的。关注事物被处理时的顺序.

四.集合中的经常用到的实现类

1.实现了List接口的ArrayList 和 LinkedList

ArrayList:允许所有元素,包括null。ArrayList没有同步。使用数组来存储元素。提供快速迭代和快速访问的能力,增删速度慢。

LinkedList:允许null元素,也是非同步的,实现了链表。访问速度慢,插入和删除速度快。

Vector:非常类似于ArrayList,所以也是用数组来存储元素,而Vector是线程同步的

2.实现了Set接口的HashSet和LinkedHashSet

HashSet:元素不可重复,底层用的也是数组,如果用hashSet来添加对象,一定要覆盖hashcode()和equals()。主要用于快速查询。

LinkedHashSet:具有hashSet的查询速度。内部维护元素的插入的顺序。

TreeSet:按照元素的自然顺序(和内容特质有关)进行排序

3.实现了Map接口的HashMap和HashTable

HashMap:实现了一个映像,允许存储空对象,允许键是空的,(键值对都可为空),非同步的。

HashTable:实现了一个映像,任何空的对象都不可以作为key或者value。是同步的。定义的键的类必须实现hashcode()和eqauls()方法。

TreeMap:对象是按照升序排序的。

4.实现了Queue接口的LinkedList和PriorityQueue