9. Map、Set、List、Queue、Stack的特点与用法

2016/9/27 11:38 上午 posted in  Java comments

Collections框架中包含了大量的集合接口及这些接口的实现。主要提供了9种Map、Set、List、Queue、Stack等数据结构。

  • Set接口表示数学中集合的概念。其主要特点是集合中的元素不重复。
  • List接口表示有序的集合。它按照对象进入的顺序保存对象,所以能对每个元素的插入和删除具体的位置进行精确的控制。它能存放重复的对象。
  • Map接口提供了一个从Key到Value的数据结构,保存键值对。其中Value可以重复,但是Key不能重复。
  • Queue接口提供了“先进先出”队列的数据结构。只能在队尾添加元素,只能在对头弹出元素。
  • Stack继承自Vector,它实现了先进后出的栈结构。

我在网络上找到一张实现Collection接口的类图,可以一目了然地看到实现的类及他们之间的关系。

Collection接口定义了一套统一的操作方法:

int size();
返回容器中元素的个数
boolean isEmpty();
判断容器是否为空,空则返回true,否则false
boolean contains(Object o);
判段容器是否包含o对象
Iterator<E> iterator();
获得该容器的迭代器
Object[] toArray();
将容器转换为对象数组
boolean add(E e);
向容器中添加元素
boolean remove(Object o);
移除容器中的对象
boolean containsAll(Collection<?> c);
判断是否包含c中的所有元素
boolean addAll(Collection<? extends E> c);
添加c容器中的所有元素
boolean removeAll(Collection<?> c);
移除c中包含的所有元素
boolean retainAll(Collection<?> c);
保留c中存在的元素,移除c中不存在的元素
void clear();
清除容器中的所有元素

Stack类中除了继承了Vector的方法外还实现了

boolean empty() 
测试堆栈是否为空。
Object peek( )
查看堆栈顶部的对象,但不从堆栈中移除它。
Object pop( )
移除堆栈顶部的对象,并作为此函数的值返回该对象。
Object push(Object element)
把项压入堆栈顶部。
int search(Object element)
返回对象在堆栈中的位置,以 1 为基数。

Queue接口中常用方法

boolean add(E e);        
增加一个元素              若队列已满,则抛出一个IIIegaISlabEepeplian异常
boolean remove();   
移除并返回队列头部的元素    若队列为空,则抛出一个NoSuchElementException异常
E element()  
返回队列头部的元素         若队列为空,则抛出一个NoSuchElementException异常
offer(E e)      
添加一个元素并返回true     若队列已满,则返回false
E poll()      
移除并返问队列头部的元素    若队列为空,则返回null
E peek()     
返回队列头部的元素         若队列为空,则返回null
void put()     
添加一个元素              若队列满,则阻塞
void take()
移除并返回队列头部的元素    若队列为空,则阻塞