JAVA学习-List总结

作者: 遇见技术 | 来源:发表于2017-06-02 18:35 被阅读220次

1.介绍

List接口的定义为该接口实现是有序的Collection,该接口的实现可以对每个元素的插入位置进行精确的控制。用户可以根据元素的整数索引访问元素,并搜索列表中的元素。而且列表允许重复的元素,而且也允许null元素,其实现类有ArrayList,LinkedList,Vector,Stack,下面将详细介绍这些实现的异同。

2.类图结构

List实现类图

如上图所示,为实现List接口的实现的类图结构,其中List的实现类主要有以下几个:

  • ArrayList:容量大小可变的数组,详细介绍请参考,JAVA学习-ArrayList详解
  • LinkedList:实现List接口双向链表,详细介绍请参考,JAVA学习-LinkedList详解
  • Vector:Vector与ArrayList一样也是可实现增长的对象数组
  • Stack:Stack表示后进先出(LIFO)的对象堆栈

由于对来说Vector和Stack使用比较少,因此没有特地的篇幅去详细介绍它们的实现细节,下面会初略的介绍下Vector和Stack的实现原理。

3.Vector与Stack

3.1 Vector

3.1.1 定义

Vector 类可以实现可增长的对象数组。与数组一样,它包含可以使用整数索引进行访问的组件。但是,Vector 的大小可以根据需要增大或缩小,以适应创建 Vector 后进行添加或移除项的操作

3.1.2 结构及实现

如下图所示为Vector的类图结构,其实可以发现与ArrayList并没有很大的区别,而且Vector的内部实现与ArrayList也是大同小异,所以在这里就不做详细的介绍了,值得注意的有如下几点:

  • Vector初始化容量为10
  • Vector是线程安全的,通过源码可以发现Vector中的方法基本都使用关键字synchronized修饰
Vector

3.2 Stack

3.2.1 定义

Stack类表示先进后出的堆栈,通过五个操作对类Vector进行了扩展。

3.2.2 结构及实现

如下图所示,Stack是Vector的子类,其实现比较简单,主要有push,pop,peek,empty,search这五个操作,值得注意的是其初始化容量为0


Stack

4.List实现类对比

1.实现

  • ArrayList:内部实现是数组
  • LinkedList:内部实现是双向链表
  • Vector:内部实现是数组
  • Stack:Vector的子类,内部实现是数组

2.线程安全

  • ArrayList:线程不安全的
  • LinkedList:线程不安全的
  • Vector:线程安全的
  • Stack:线程安全的

3.性能

JAVA学习-LinkedList详解一文中有比较ArrayList与LinkedList在性能上的区别,对于Vector与Stack,如果不是特定的场景必须使用,建议还是使用ArrayList与LinkedList。

5.总结

本文是对前面所写有关List实现类的总结,希望能更好的理解各个List实现类的内部原理及应用场景,在开发中能够好的运用,如有问题,请指正!

相关文章

  • JAVA学习-List总结

    1.介绍 List接口的定义为该接口实现是有序的Collection,该接口的实现可以对每个元素的插入位置进行精确...

  • List、Set和Map

    java 常用集合list与Set、Map区别及适用场景总结Java中容器[Collection(List,Set...

  • Java集合总结

    一:List Java ArrayList源码学习 Java LinkedList源码学习 Java Vector...

  • Java List集合总结

    List继承了Collection,是有序的列表. 实现类有ArrayList、LinkedList、Vector...

  • 2018-03-21

    Java学习笔记1 利用Set对List去重 1、List中元素为Integer, Double ,String ...

  • 2018-04-26

    Java学习随笔8 List排序 这里的list默认是ArrayLIst 首先ArrayList有两种sort方法...

  • java学习day04-方法和数组

    java学习第四天内容总结: 学习内容: 关注公众号:java进阶架构师,获取的学习视频 总结: 1、java...

  • JAVA Collection学习---List

    让我们看下集合(容器)所属继承关系 其中,我们首先来看Collection接口中实现的方法。 其中实现的方法都比较...

  • Array

    Java中Java List 、List、L...

  • Day01自学 - Python 列表(List)

    学习参考博客地址:Python 列表(List) | python list(列表)操作用法总结 一、基础语法 创...

网友评论

    本文标题:JAVA学习-List总结

    本文链接:https://www.haomeiwen.com/subject/gyiufxtx.html