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帮助文档中还有一张各接口与存储形式的对照表,摘录如下:
HashSet
-TreeSet
-LinkedHashSet
List-ArrayList
-LinkedList
-Deque-ArrayDeque
-LinkedList
-MapHashMap
-TreeMap
-LinkedHashMap
上表中加粗显示的就是最常用的实现类,一般情况下选择这几个就可以了。
接下来将各接口最常用的一些方法整理总结一下。
Collection接口
所有的List
、Set
、Queue
均支持以下方法:
size()
isEmpty()
contains()
add()
remove()
iterator()
toArray()
clear()
forEach()
Iterator接口
hasNext()
next()
remove()
List接口
在Collection
接口的基础上添加了以下方法:
get()
set()
add(int,E)
remove(int)
indexOf()
lastIndexOf()
ListIterator接口
在Iterator
接口的基础上添加了以下方法:
add()
set()
hasPrevious()
previous()
Set接口
Set
接口没有添加新方法,与Collection
接口中的相同。
添加到Set
中的类一般都要覆盖实现hashCode()
及equals()
函数。
SortedSet接口
在Set
接口的基础上添加了以下方法:
subSet()
headSet()
tailSet()
first()
last()
添加到SortedSet
中的类需要实现Comparable
接口。
Deque接口
在Collection
接口的基础上添加了以下方法:
addFirst()
addLast()
removeFirst()
removeLast()
getFirst()
getLast()
Map接口
常用函数有:
put()
get()
remove()
size()
isEmpty()
containsKey()
containsValue()
keySet()
values()
添加到Map
中的Key类一般都要覆盖实现hashCode()
及equals()
函数。
SortedMap接口
在Map
接口的基础上添加了以下方法:
subMap()
headMap()
tailMap()
firstKey()
lastKey()
SortedMap
是按照Key来进行排序的,要求Key需要实现Comparable
接口。
Arrays类
用于支持数组操作,常用静态函数有:
asList()
binarySearch()
copyOf()
equals()
fill()
sort()
Collections类
用于支持集合框架的通用算法,常用静态函数有:
sort()
binarySearch()
copy()
shuffle()
fill()
reverse()
关于各种容器类的具体介绍与使用方法,可参考官方的Tutorial:Trail: Collections
- Java集合:集合框架
- 【Java】java集合框架
- [Java]Java集合框架
- JAVA集合框架和集合
- 【集合】Java集合框架介绍
- Java集合之集合框架
- [集合]Java的集合框架 Collection集合
- Java集合框架 (一)
- Java集合框架 (二)
- Java集合框架(三)
- Java集合框架
- 也来谈Java集合框架
- 也来谈Java集合框架
- Java集合框架 (一)
- Java集合框架
- 也来谈Java集合框架
- java集合框架
- Java集合框架总结
- 用CountDownLatch提升请求处理速度
- 【Linux】终端仿真程序SecureCRT的安装与注册
- Cloudera Hadoop Hive原理与应用
- TCP即时通讯判断网络状态和断线重连机制
- Linux终端复用神器-Tmux使用梳理
- Java集合框架
- NOIP错题集锦(不定时更新)
- Java配置实现Jackson对象获取和文件上传
- 【Spring】与Struts框架整合(八)
- 第四周项目3 单链表应用
- C++中用于输入的几个函数
- 【JAVA基础】集合类源码分析_LinkedList
- IPA 笔记
- 数据结构与算法·实验十