Java之集合体系架构图以及常用方法

Java之集合体系架构图

Java之集合体系架构图以及常用方法

助记:集合类就像容器,现实生活中容器的功能,无非就是添加对象、删除对象、清空容器、判断集合是否为空等。

(一)Collection接口中的常用方法

Java之集合体系架构图以及常用方法

(二)List接口常用方法

List作为Collection集合的子接口,不但继承了Collection接口中的全部方法,而且还增加了一些根据元素索引来操作集合的特有方法。

Java之集合体系架构图以及常用方法

ArrayList & LinkedList

List接口的两个常见实现类为ArrayList和LinkedList,分别用动态数组和链表的方式实现了List接口。 可以认为ArrayList和LinkedList的方法在逻辑上完全一样, 只是在性能上有一定的差别。ArrayList更适合于随机访问而LinkedList更适合插入和删除。在性能要求不是特别苛刻的情形下可以忽略这个差别 。

ArrayList

ArrayList集合的底层是使用一个数组来保存元素,在增加或删除指定位置的元素时,会导致创建新的数组,效率比较低,因此不适合做大量的增删操作。但是这种数组的结构允许程序通过索引的方式来访问元素,因此,使用 ArrayList集合查找元素很便捷。

LinkedList

LinkedList集合内部维护了一个双向循环链表,链表中的每一个元素都使用引用的方式来记住它的前一个元素和后一个元素,从而可以将所有的元素彼此连接起来。当插入一个新元素时,只需要修改元素之间的这种引用关系即可,删除一个节点也是如此。正因为这样的存储结构,所以LinkedList集合对于元素的增删操作具有很高的效率。

Java之集合体系架构图以及常用方法

Java之集合体系架构图以及常用方法

(三)Set

Set接口和List接口一样,同样继承自Collection接口,它与Collection接口中的方法基本一致,并没有对Collection接口进行功能上的扩充,只是比Collection接口更加严格了。与List接口不同的是,Set接口中元素无序,并且都会以某种规则保证存入的元素不出现重复。

HashSet集合

HashSet是Set接口的一个实现类,它所存储的元素是不可重复的,并且元素都是无序的。当向HashSet集合中添加一个对象时,首先会调用该对象的hashCode()方法来确定元素的存储位置,然后再调用对象的equals()方法来确保该位置没有重复元素。

(四)Queue

队列(Queue)是常用的数据结构,可以将队列看成特殊的线性表,队列限制了对线性表的访问方式: 只能从线性表的一端添加(offer)元素,从另一端取出(poll)元素。

队列遵循先进先出(FIFO)的原则。

Queue接口中常用的方法

Java之集合体系架构图以及常用方法

(五)Deque

Deque是Queue的子接口,定义了所谓的“双端队列”即从队列的两端分别可以入队(offer)和出队(poll)。 LinkedList实现了该接口。如果将Deque限制为只能从一端入队和出队,则可实现“栈”(Stack)的数据结构,对于栈而言, 入栈称为push,出栈称为pop。

栈遵循先进后出(FILO)的原则。

(六)Map

Map接口定义的集合又称之为查找表,用于存储所谓的“Key-Value”映射对。Key可以看成是Value的索引,作为Key的对象在集合中不可以重复.根据内部数据结构不同,Map接口有多种实现类,其中常用的有内部为hash表实现的HashMap和内部为排序二叉树实现的TreeMap。

Map接口常用方法

Java之集合体系架构图以及常用方法