Java集合框架

来源:互联网 发布:300英雄辅助软件 编辑:程序博客网 时间:2024/05/29 16:40

作者:高明飞

原文链接:https://gaomf.cn/2016/09/16/Java%E9%9B%86%E5%90%88%E6%A1%86%E6%9E%B6/

Java中提供了丰富的容器类用于存储数据,这些容器类可分为两大类:Collection和Map,Collection用于保存单个元素,而Map则以键值对的形式进行存储,就像一个小型数据库一样。Collection中又可分为List、Set、Queue三类,其中List是列表,Set是集合,Queue是队列。整个Java集合框架的结构图如下:


网上能找到的图都不是很全面,故我根据最新版的JDK 8文档绘制了此图。图中并没有包含所有的接口与类,仅仅只是最常用的部分,这些部分均位于java.util包中。图中蓝色的实现类就是我们实际可以直接使用的容器类了。

JDK帮助文档中还有一张各接口与存储形式的对照表,摘录如下:

InterfaceHash TableResizable ArrayBalanced TreeLinked ListHash Table + Linked ListSetHashSet-TreeSet-LinkedHashSetList-ArrayList-LinkedList-Deque-ArrayDeque-LinkedList-MapHashMap-TreeMap-LinkedHashMap

上表中加粗显示的就是最常用的实现类,一般情况下选择这几个就可以了。

接下来将各接口最常用的一些方法整理总结一下。

Collection接口

所有的ListSetQueue均支持以下方法:

Function Namesize()isEmpty()contains()add()remove()iterator()toArray()clear()forEach()

Iterator接口

Function NamehasNext()next()remove()

List接口

Collection接口的基础上添加了以下方法:

Function Nameget()set()add(int,E)remove(int)indexOf()lastIndexOf()

ListIterator接口

Iterator接口的基础上添加了以下方法:

Function Nameadd()set()hasPrevious()previous()

Set接口

Set接口没有添加新方法,与Collection接口中的相同。

添加到Set中的类一般都要覆盖实现hashCode()equals()函数。

SortedSet接口

Set接口的基础上添加了以下方法:

Function NamesubSet()headSet()tailSet()first()last()

添加到SortedSet中的类需要实现Comparable接口。

Deque接口

Collection接口的基础上添加了以下方法:

Function NameaddFirst()addLast()removeFirst()removeLast()getFirst()getLast()

Map接口

常用函数有:

Function Nameput()get()remove()size()isEmpty()containsKey()containsValue()keySet()values()

添加到Map中的Key类一般都要覆盖实现hashCode()equals()函数。

SortedMap接口

Map接口的基础上添加了以下方法:

Function NamesubMap()headMap()tailMap()firstKey()lastKey()

SortedMap是按照Key来进行排序的,要求Key需要实现Comparable接口。

Arrays类

用于支持数组操作,常用静态函数有:

Function NameasList()binarySearch()copyOf()equals()fill()sort()

Collections类

用于支持集合框架的通用算法,常用静态函数有:

Function Namesort()binarySearch()copy()shuffle()fill()reverse()

关于各种容器类的具体介绍与使用方法,可参考官方的Tutorial:Trail: Collections