JDK 1.8集合框架 Map、Set、List、Queue、Stack比较

JDK 1.8集合框架基本架构图

这里写图片描述

比较

组件 比较
Map 1、Map是键值对,使用哈希映射,键不能重复,值可以重复。 2、TreeMap可以排列顺序,HashMap为无序的。 3、Map中可以将Key和Value单独抽取出来,其中KeySet()方法可以将所有的keys抽取正一个Set。而Values()方法可以将map中所有的values抽取成一个集合。
Set 1、不重复元素的集合,set中最多包含一个null元素 2、只能用Lterator实现单项遍历,Set中没有同步方法。
List 1、有序的可重复集合。 2、可以在任意位置增加删除元素。 3、用Iterator实现单向遍历,也可用ListIterator实现双向遍历
Queue 1、Queue遵从先进先出原则。 2、使用时尽量避免add()和remove()方法,而是使用offer()来添加元素,使用poll()来移除元素,它的优点是可以通过返回值来判断是否成功。 3、LinkedList实现了Queue接口。 4、Queue通常不允许插入null元素。
Stack 1、Stack遵从后进先出原则。 2、Stack继承自Vector。 3、它通过五个操作对类Vector进行扩展,允许将向量视为堆栈,它提供了通常的push和pop操作,以及取堆栈顶点的peek()方法、测试堆栈是否为空的empty方法等

注:
哈希映射结构由一个存储元素的内部数组组成。由于内部采用数组存储,因此必然存在一个用于确定任意键访问数组的索引机制。实际上,该机制需要提供一个小于数组大小的整数索引值。该机制称作哈希函数

用法:
如果涉及堆栈,队列等操作,建议使用List
对于快速插入和删除元素的,建议使用LinkedList
如果需要快速随机访问元素的,建议使用ArrayList

你可能感兴趣的:(数据结构与算法)