Java集合篇(一):集合概览、List

参考博客:https://www.cnblogs.com/ysocean/p/6555373.html

 

集合类和数组不同,数组元素可以为基本数据类型值/对象引用,集合元素只能为对象引用。

Java中的集合有两大类,分别是:Collection、Map。

 

Collection类的集合可以理解为主要存放的是单个对象,而Map类的集合主要存储的是key-value类型的对象。这两大类即可理所当然的对应着​两个接口,分别是Collection接口Map接口,下面这幅图列出了这两个接口的继承树: 

 

 

先介绍List的,Set和Map以后再介绍:

LinkedList:从上图可以看出,不但继承了List接口,还继承了Deque接口(后面会介绍)。LinkedList是一个基于链表的数据结构,每个节点都保存了上一个和下一个节点的指针。LinkedList对于随机访问效率是比较低的,因为它需要从头开始索引,所以其时间复杂度为O(i)。但是对于元素的增删,LinkedList效率高,因为只需要修改前后指针即可,其时间复杂度为O(1)

Vector:从Vector和ArrayList源码截图可以看出,它们继承的接口完全一致。所以,Vector可以看做是一个线程安全的ArrayList,它内部也是基于数组实现的,不过几乎所有的集合操作都加了synchronized关键字。

 

Stack:上面是Stack类源码截图,我们看到Stack类其实继承自Vector,Stack只是在Vector的基础上添加了几个方法以提供栈(Last In First Out LIFO)的特性。Stack的特点是添加时新元素会被添加到顶部,移除时顶部的元素最先被移除。这种数据结构主要用作一些特殊数据加工流程,如语言编译、XML解析等。

 

posted @ 2019-07-06 11:16  TangXinPing  阅读(235)  评论(0)    收藏  举报