Java集合,总体框架及主要接口,抽象类分析

概述

集合类作为主要的工具类,主要用于存储对象,常用的数据结构如 栈,队列,列表等。Java集合主要分为Set, List ,Queue ,Map 四种体系。

Set:代表无序,不可重复的集合
List:代表有序,重复的集合
Map:代表的是映射关系的集合,存放的是k-v 的对象
Queue:代表的是队列的实现
Java集合可以理解为一种容器,可以把多个对象放入容器中。 集合类主要负责保存数据。所有的集合类都位于java.util包下,集合类中只能保存对象(其实存放的也是对象的引用,但是习惯上称为保存对象)

总体框架

Java集合,总体框架及主要接口,抽象类分析_第1张图片

从上面的图中可以看出,集合类主要有两个接口来派生,一个是Collection接口,一个Map接口。由这两个接口的子接口或者实现类组成了Java的集合框架体系。

Collection

Collection是Queue,List,Set的根类 ,是一个高度抽象出来的接口,包含了集合的基本操作和属性。

Collection接口中定义了如下操作集合的方法:

boolean add(E e) //向集合中添加元素
boolean addAll(Collection c) //把集合c中的所有元素添加到指定的集合里
void clear() //清除集合中的元素,长度变为0
boolean containsAll(Collection c) //返回集合中是否包含集合c中的所有元素
boolean isEmpty() //集合是否为空
Iterator iterator() //返回一个Iterator对象,用于遍历集合中的元素
boolean remove(Object o) //删除集合中指定的对象
boolean removeAll(Collection c) //删除所有包含集合c中的所有对象
boolean retainAll(Collection c) //删除集合c中不包含的对象
int size() //返回集合里元素的个数
Object[] toArray() //把集合转化为一个数组
T[] toArray(T[] a) //把集合转化为一个指定类型的数组,推荐使用此种方式
List

定义

public interface Listextends Collection {}
List继承于Collection接口,是一个有序的集合,集合中的每个元素都对应一个下标或者称之为索引,允许有重复的元素存在。可以使用Collection 的全部方法,添加了一些根据索引来操作的方法。

API

void add(int index, E element)
boolean addAll(int index, Collection c)
ListIterator listIterator(int index)
E remove(int index)
E set(int index, E element)
int size()
List subList(int fromIndex, int toIndex)
Set

定义

public interface Set extends Collection {}
Set继承于Collection接口,Set中集合元素是无序的不允许重复,它类似于一个罐子,可以可以依次把多个对象放入Set集合中,Set集合记不住元素的放入顺序。与Collection基本相同,没有提供额外的方法。常用的实现类有,HashSet ,TreeSet ,EnumSet等。

API

// Set的API
abstract boolean add(E object)
abstract boolean addAll(Collection collection)
abstract void clear()
abstract boolean contains(Object object)
abstract boolean containsAll(Collection collection)
abstract boolean equals(Object object)
abstract int hashCode()
abstract boolean isEmpty()
abstract Iterator iterator()
abstract boolean remove(Object object)
abstract boolean removeAll(Collection collection)
abstract boolean retainAll(Collection collection)
abstract int size()
abstract T[] toArray(T[] array)
abstract Object[] toArray()
Queue

定义

public interface Queue extends Collection {}
Queue继承于Collection接口,Queue是用于模拟队列这种数据结构,队列通常是先进先出的容器,队列的头部,保存在队列中存放时间最长的元素,队列的尾部,保存队列中存放时间最短的元素。新元素放在队列的尾部,访问元素操作会返回队列的头部元素。

API

add(E e)
E element()
E peek() //获取队列的元素但不删除该元素
E poll() //获取队列头部的元素,删除该元素
E remove() //获取队列头部的元素删除该元素
Map

定义

public interface Map {}
Map用于保存具有映射关系的数据,存储的是key-value 对的形式。Map中的Key不允许重复,key和value之间存在单向一对一关系。

API

void clear() //删除Map对象中的所有 key-value对
boolean containsKey(Object key) //查询Map中是否包含一个或多个value
boolean containsValue(Object value) //返回Map中是否包含指定的key
Set> entrySet() //返回Map中包含的key-value对所组成的Set集合
V get(Object key) //返回指定key对应的value
boolean isEmpty() //是否为空
Set keySet() //返回key组成的set集合
V put(K key, V value) //添加一个key-value对
void putAll(Map m) //将指定map中的key-value复制到当前map中
V remove(Object key) //根据key删除
int size() //map中存放的元素数量
Collection values() //返回map中由value组成的集合

AbstractCollection

定义

public abstract class AbstractCollection implements Collection {}
AbstractCollection实现了Collection集合,是一个抽象类。

API
Java集合,总体框架及主要接口,抽象类分析_第2张图片

AbstractList

定义

public abstract class AbstractList extends AbstractCollection implements List {}
API
Java集合,总体框架及主要接口,抽象类分析_第3张图片

AbstractSet

定义

public abstract class AbstractSet extends AbstractCollection implements Set {}
API
Java集合,总体框架及主要接口,抽象类分析_第4张图片

AbstractQueue

定义

public abstract class AbstractQueue extends AbstractCollection implements Queue {}
API
Java集合,总体框架及主要接口,抽象类分析_第5张图片

AbstractMap

定义

public abstract class AbstractMap implements Map {}
API
Java集合,总体框架及主要接口,抽象类分析_第6张图片

SortedMap

定义

public interface SortedMap extends Map {}
SortedMap是一个继承于Map接口的接口。它是一个有序的SortedMap键值映射。它的实现类为TreeMap ,TreeMap就是一个红黑树数据结构,每个key-value对即作为红黑树的一个节点,TreeMap有两种排序方式:

  • 自然排序,TreeMap的所有key必须实现Comparable接口,而且所有的key应该是同一个类的对象

  • 定制排序:创建TreeMap时,传入一个Comparable对象,该对象负责对TreeMap中所有的Key进行排序。

API
Java集合,总体框架及主要接口,抽象类分析_第7张图片

你可能感兴趣的:(程序员)