美文网首页
java基础-List

java基础-List

作者: 小庄bb | 来源:发表于2017-08-06 13:20 被阅读16次

ArrayList、LinkedList、Vector的区别

1、List概述

List,就如图名字所示一样,是元素的有序列表。当我们讨论List时,将其与Set作对比是一个很好的办法,Set集合中的元素是无序且唯一的。

下图是Collection的类继承图,从图中你可以对本文所讨论的知识有大致的了解.

图1-1

2、ArrayList、LinkedList与Vector对比

从上图可以看出三者都继承了List接口。所使用的方法也十分相似。主要的区别在于实现方式的不同,所以对于不同的操作有不同的效率。

ArrayList是一个可变大小的数组,当元素数量达到数组容量上限时,数组的容量会动态的增长,一般为+50%。由于ArrayList本质上是一个数组,所以内部的元素可以get(),set()方法直接访问。

LinkedList是一个双链表,在添加和删除元素时拥有比ArrayList更好地性能,但是在get() , set()方面弱于ArrayList,当然当数据量非常小时,比较便失去了意义。

Vector与arrayList相似,但其是一个强同步类,如果你的程序本身是线程安全的或者说只有一个主线程,没有在多个线程之间共享一个对象,那么请选择ArrayList,他不会让你失望。因为由于要实现强同步,必然承担效率的损耗。

值得注意的是LinkedList还实现了Queue接口,该接口为我们提供了更多的方法,包括offer() , poll() 。

3、ArrayList与LinkList性能比较

测试代码git地址:

JavaBase/per.pb.listText/src/text/ArrayListText.java



/*

* 测试结论总结:当指定下标数据读取,以及列表末端的插入和删除ArrayList要优于LinkedList

* 当非末端的插入和删除时,LinkedList要优于ArrayList

*/


使用小技巧:

1、如果ArrayList的初始容量值特别小,你可以预估数据量的话,尽量给ArrayList或者Vector设置较大的一个初始容量值。这样可以减少空间的开销。

2、ArrayList当元素数量超限时,数组大小会增长50%。Vector则增长100%,所以如果对内存要求较高,可以考虑选择ArrayList。

3、一般建议使用ArrayList,线程问题可以自定义调控。

相关文章

  • java基础-List

    ArrayList、LinkedList、Vector的区别 1、List概述 List,就如图名字所示一样,是元...

  • java集合框架List了解多少

    第1集 编程语⾔⾯试题之新版javase集合框架List基础篇简介:java集合框架⾥⾯List常⻅基础⾯试题考查...

  • Python_基础_数据类型_2

    在看完基础数据类型后,我们看看列表和字典类型 list Python 中 list 和 java 中的 List ...

  • Android面试复习笔记 6

    11.Java基础 1. 集合 List,Set,Queue和Map。List,Set,Queue都是接口,他们都...

  • Android知识点总结(2021)

    一、 Java基础 1、List(有序、可重复) List里存放的对象是有序的,同时也是可以重复的,List关注的...

  • 2017-11-18

    TODO List: 1.看JAVA基础 Actual List: 1. JVM 与字节码 JVM 与具体平台有关...

  • list.add()和list.addAll()的区别

    勇哥勇哥 Java基础 2019年1月19日88 0 0List.add() 往List 中增加list。但是,它...

  • 培训文档

    java基础 集合List:ArrayList,LinkedListSet:HashSet,Li...

  • 集合的一些源码分析

    java基础 hashmap原理 Java集合说一说吧set ,list,map都问了一遍 java中util包下...

  • Java面试大纲

    答案不全,欢迎补充订正~ Java基础 1、List 和 Set 的区别~List允许重复,有序容器,按照存放顺序...

网友评论

      本文标题:java基础-List

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