前言

  线性表不仅可以存储重复的元素,而且可以指定元素存储的位置并根据下表访问元素。

  List接口的两个具体实现:数组线性表类ArrayList、链表类LinkedList

ArrayList

  ArrayList使用数组存储元素,这个数组是动态创建的。如果元素个数超过了数组的容量,就会创建一个更大的数组,并将当前数组中的所有元素都复制到新数组中。另外需要注意的是,ArrayList容量可能根据元素的增加而自动增大,但是不能自动减少。可以使用trimToSize()将数组容量减少到线性表大小。

LinkedList

  即是使用一个链表来进行存储元素。因此可以提供从线性表的两端插入和删除元素的方法。

1. 若要提取元素或在线性表的尾部插入或删除元素,不能再其他位置插入或者删除元素,那么ArrayList效率较高。

2. 但是如若需要在线性表的任意位置插入或者删除元素,LinkedList则为最佳。

3. 如果不需要在线性表中插入删除元素,只是访问元素的话,数组则是效率最高的数据结构。

线性表之何时使用ArrayList、LinkedList?的更多相关文章

  1. [数据结构-线性表1.2] 链表与 LinkedList<T>(.NET 源码学习)

    [数据结构-线性表1.2] 链表与 LinkedList<T> [注:本篇文章源码内容较少,分析度较浅,请酌情选择阅读] 关键词:链表(数据结构)    C#中的链表(源码)    可空类 ...

  2. 规则集Set与线性表List性能分析

    前言 本章节将通过实验,测试规则集与线性表的性能.那么如何进行实验呢?针对不同的集合都进行指定数量元素的添加和删除操作,计算耗费时间进行分析. 那么,前两个章节呢,我们分别讲述了什么时候使用Set以及 ...

  3. Java实现线性表-顺序表示和链式表示

    顺序表示和链式表示的比较: 1.读写方式:顺序表可以顺序存取,也可以随机存取:链表只能从表头顺序存取元素: 2.逻辑结构与物理结构:顺序存储时,逻辑上相邻的元素其对应的物理存储位置也相邻:链式存储时, ...

  4. 数组线性表ArrayList 和链表类LinkedList

    数组线性表类ArrayList 和链表类LinkedList 是实现List接口的两个具体类.ArrayList 数组储存元素,这个数组是动态创建的.如果元素个数超过了数组的容量,就创建一个更大的新数 ...

  5. [从今天开始修炼数据结构]线性表及其实现以及实现有Itertor的ArrayList和LinkedList

    一.线性表 1,什么是线性表 线性表就是零个或多个数据元素的有限序列.线性表中的每个元素只能有零个或一个前驱元素,零个或一个后继元素.在较复杂的线性表中,一个数据元素可以由若干个数据项组成.比如牵手排 ...

  6. 集合线性表--List之ArrayList

    集合操作——线性表 List: add().remove().subList().list.toArray().array.asList(). List排序:  Collections.sort(li ...

  7. List 线性表:ArrayLis,LinkedList

    package seday11.list; import java.util.ArrayList;import java.util.List; /*** @author xingsir * java. ...

  8. JAVA中的数据结构——集合类(线性表:Vector、Stack、LinkedList、set接口;键值对:Hashtable、Map接口<HashMap类、TreeMap类>)

    Java的集合可以分为两种,第一种是以数组为代表的线性表,基类是Collection:第二种是以Hashtable为代表的键值对. ... 线性表,基类是Collection: 数组类: person ...

  9. 顺序线性表 ---- ArrayList 源码解析及实现原理分析

    原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7738888.html ------------------------------------ ...

随机推荐

  1. ++i,i++和i += 1的区别

    ++i,i++和i += 1的区别 单条语句:i++;.++i;和 i += 1;等价. int i = 0; ++i; // 或者i++;或者i += 1; cout << i < ...

  2. 表达式求值(栈方法/C++语言描述)(三)

    代码清单 // calculator.h #ifndef CALCULATOR_H #define CALCULATOR_H #include <stack> #include <s ...

  3. Hibernate批量操作(二)

    Hibernate提供了一系列的查询接口,这些接口在实现上又有所不同.这里对Hibernate中的查询接口进行一个小结. 我们首先来看一下session加载实体对象的过程:Session在调用数据库查 ...

  4. HTML5基本标签

    一.HTML5文档类型说明  二.head部分-基本标签1.<head>标签head中主要放关于网页设置的相关语句.   2.<title>标签  3.<link> ...

  5. linux 压缩解压打包工具大集合

    压缩.解压缩及归档工具有很多,今天小编就整理几个大家较为常用的. compress gzip  bzip2 xz zip tar cpio 一.压缩.解压工具 用法 压缩 工具 压缩后 压缩包格式 解 ...

  6. struts2整合JFreechart 饼图、折线图、柱形图

    struts2整合JFreechart 饼图.折线图.柱形图 上效果图: 当然可以将数据导出图片格式存储.具体下的链接里的文件有保存成图片的操作. 因为是strust2整合JFreechart,所以s ...

  7. vc++6.0修改字体

    近期在使用vc++6.0写C程序 问题:vc++自带的字体不太好看 解决办法:修改注册表 1. win+r 运行 regedit 调出注册表编辑器 进入到目录 HKEY_CURRENT_USER\SO ...

  8. 移动端touch事件 || 上拉加载更多

    前言: 说多了都是泪,在进行项目开发时,在上拉加载更多实现分页效果的问题上,由于当时开发任务紧急,所以就百度找了各种移动端的上拉下拉 实现加载更多的插件.然后就留下了个坑:上拉加载的时候会由于用户错误 ...

  9. Canvas 宽度、高度设置

    在HTML5中插入一个Canvas元素,如下: <canvas id="mycanvas"></canvas> 要想在该画板上进行操作,则需要先取得其执行上 ...

  10. ReactNative环境搭建扩展篇——安装后报错解决方案

    之前一篇写了<逻辑性最强的React Native环境搭建与调试>说了RN的安装,今天在这里做一个复盘,让我们能够更直观更深入的了解React Native(以下简称RN),这一篇重点来说 ...