集合容器概览

飞来科技  发布时间:2018-01-14 13:26:00

本文关键词:双链表基本操作

双链表基本操作_复制二叉树的算法_二叉树遍历算法

Java世界中,泛型和集合容器的存在大大的提高了程序员的编程能力,是开发者技能百宝箱中的重要武器之一,、因此掌握集合框架的实现原理及内部结构变得非常的重要。本文主要对集合框架体系中日常开发经常遇到的接口、抽象类及其实现类进行梳理,从宏观上去理解整个集合框架体系,具体实现类的源码实现原理分析在单独的博客中进行详述。双链表基本操作

Collection接口及其实现类

Collection:Collection接口代表存储一组独立元素序列的容器,其代表的容器主要有Set(无序无重复元素)、List(元素按添加的顺序存储,可重复)、Queue(按先进先出的顺序存储元素,多线程环境中常用作队列)。

Map接口及其实现类

Map:Map接口又称为关联数组其代表键值对的存储结构,代表的容器主要有HashMap(采用哈希存储,无序但查找性能最快)、TreeMap(有序,可自定义排序方式,查找性能逊色于HashMap)、LinkedHashMap(性能上在HashMap和TreeMap之间折中,内部使用链表结构存储,遍历时按插入顺序排序)。

List

arraylist和vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,vector由于使用了synchronized方法(线程安全),通常性能上较arraylist差,而linkedlist使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。

元素有放入顺序,元素可重复 list接口有三个实现类:linkedlist,arraylist,vector linkedlist:底层基于链表实现,链表内存是散乱的,每一个元素存储本身内存地址的同时还存储下一个元素的地址。

实现list接口的类主要有三个:linkedlist, arraylist, vector(面试中常有三种的区别)list接口有三个实现类:linkedlist,arraylist,vector linkedlist:底层基于链表实现,链表内存是散乱的,每一个元素存储本身内存地址的同时还存储下一个元素的地址。

链表在我们java中也是一种基础的数据结构,可以理解成是一种和数组同级的数组结构,正如我们所知,在我们使用这集合arraylist和linkedlist的时候,总会学习底层数组实现的arraylist和双向链表实现的linkedlist的区别。

ArrayList(随机访问元素性能较高、向指定位置添加元素需要移动元素,不适用于需要频繁添加或删除元素的场景)

LinkedList(添加或删除元素性能较高、随机访问元素代价较高、特性集较ArrayList更为强大)

图示方法均继承自Collection接口,属于日常开发中常用方法,其中LinkedList同时实现了Deque接口(基于双端队列),相比ArrayList功能上更为强大,可用作栈(Stack)或队列(Queue).

双链表基本操作_二叉树遍历算法_复制二叉树的算法

Set

Set可确保添加元素的唯一性,不允许添加重复元素,其实现类主要有HashSet(底层基于HashTable)、LinkedHashSet(底层基于链表)、TreeSet(底层基于树结构),具体特性如下:

HashSet(基于Hash存储,查找元素性能优良,应该作为Set实现类的默认选择)

LinkedHashSet(具有HashSet查找元素的性能,内部使用链表维护元素有序性)

本文来自互联网,由机器人自动采编,文章内容不代表本站观点,请读者自行辨别信息真伪,如有发现不适内容,请及时联系站长处理。

相关阅读