java中List接口的实现类 ArrayList,LinkedList,Vector 的区别

java中List接口的实现类 ArrayList,LinkedList,Vector 的区别

前情提要

复习完数组、链表、栈这三个数据结构之后,再来看下Java中有序集合List的常用实现类使用什么数据结构实现?以及各类之间有什么区别?实际应用场景中怎么选取合适的类。首先让我们大致看下Java平台提供的集合框架图,对各个类的继承和实现有个大致印象。我会把我学习过程中用到的资料链接都整理出来。
java中List接口的实现类 ArrayList,LinkedList,Vector 的区别

学习步骤

学基本的数据结构定义,写代码实现基本的各数据结构是对数据操作。
我看到是极客时间平台上王争讲的 《数据结构与算法之美》找个类似的讲的比较系统全面的都行。觉得稍微难理解的地方,再去找找针对性的资料讲解。比如文章中快速排序的见解方式跟我之前学过的讲解方式不一致,我重新找了极客学院Wiki里头的讲的 快速排序,就是之前我学过的方法,对我来说重新看起来就很清晰易懂了。
刷算法题。
牛客网上的剑指Offer大家都在刷,找对对应数据结构的题刷,每天学一点刷一块类型的。刷完还可以刷 LeetCode上对应类型的题。分类型去刷题目标性明确一些,对该题型更容易掌握一些。
找数据结构在Java平台中的对应的实现类。
在jdk文档中查看某个类的介绍和有哪些方法实现。在IDE中点击查看某个方法的具体时间,加深理解。

开篇问题解答

Collection是最基本的集合
提供更具体的子接口:Set、List。set不允许重复元素,List列表允许重复元素
List是有序集合。实现list的常用类有:LinkedList、ArrayList、Vector、Stack。
List特性:1、可以存放同一种类型的元素。
2、内部维护元素之间的顺序,是有序集合。
3、元素是可以重复的。

实现list的常用类有:LinkedList、ArrayList、Vector、Stack。他们之间的区别是:

  1. LinkedList:List接口的链接列表实现。此实现不是同步的。在列表的开头和结尾get、remove、insert元素提供了统一的命名方法。
  2. ArrayList:List接口的大小可变数组实现。此实现不是同步的。
  3. Vector:内部实现和ArrayList一样都是数组存储,最大的不同就是它支持线程同步,所以访问比ArrayList慢,但是数据安全。
  4. Stack:表示先进后出的对象堆栈。通过五个操作对联Vector进行了扩展。允许将向量视为堆栈。

适用场景:使用线程同步的时候Vector类首选
需要经常删除、增加使用LinkedList(链表结构)、经常需要查询迭代使用ArrayList(数组结构)、Stack应用于表达式求值、括号匹配、浏览器前进后退等。

问题解答参考文章链接:https://blog.csdn.net/qq_30739519/article/details/50877217