Java数据结构——ArrayList
来源:互联网 发布:全球煤炭储量知乎 编辑:程序博客网 时间:2024/06/07 07:09
数据结构的分类
集合
线性结构
数结构
图结构Java中常用集合类
线性结构
Java中使用List接口描述线性结构,其实现类使用最频繁的有ArrayList(数组线性表)和LinkedList(双向链表)。List接口定义的常用方法如下表:数组线性表ArrayList
ArrayList使用连续的内存单元存储数据元素,当添加或删除数据元素时(除数组线性表的最后位置外),ArrayList需要移动其被添加(或删除)元素后面的全部元素。在遍历所有元素方面,ArrayList具有很好的效率,因为其数据元素的连续性,所有只需要获取到第一个元素的地址,再使用地址指针下移的方式即可获取全部元素。
- ArrayList适合存储经常用于显示的数据,并且不对查询结果进行修改,而仅仅是用于客户显示
- 如果我们只是在ArrayList的末尾进行添加(或删除)操作,可以使用ArrayList
泛型(简介)
- 泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口和泛型方法。 Java语言引入泛型的好处是安全简单
- 对于数据结构来说,泛型用于指定当前数据结构存储的元素类型,例如:ArrayList表示当前的数组线性表只能存储String类型的数据
- 也可以在List中存储自定义类型,例如:LinkedList表示当前的双向链表中只能存储Student的对象
数组线性表与数组的区别
- 数组是定长有序的线型结合
数组线性表是任意长度的线型集合
- 两者本质的区别在与长度是否可变
两者获取元素的方式不同
- 数组:使用下标:array [index]
- 数组线性表:使用get方法:list.get(index)
获取长度的方式不同
数组:length属性
数组线性表:size()方法
双向链表LinkedList
- LinkedList是使用指针关联的双向链表,其获取下一个元素的方式是通过指向下一个元素的地址对象(通常叫做指针)获取的,由于它的链式存储结构,LinkedList在任意位置的元素插入(或删除)效率都比较快,因为元素插入(或删除)不需要移动LinkedList中的其它元素,当需要一个频繁插入(或删除)的线性结构时,首选的List实现类应该是LinkedList。
- 1.LinkedList对于ArrayList来说,其遍历速度较慢,因为他获取下一个元素的时间为寻址时间
2.LinkedList适合存储数据元素变动较大的线性集合,可以更快速的对指定位置的元素进行增加、删除、修改和查询功能
ArrayList和LinkedList区别
- ArrayList的存储空间是连续的,故对所有元素的遍历速度较快
LinkedList的存储方式是链式的,所以每个元素都记录了前元素和后元素,故插入元素和删除的速度较快
Vector(介绍)
- Vector是一个Object类型的可变长的数组,其元素类型可以是任意的数据类型(Object的子类),我们使用Vector通常是存储元素类型不同,但描述对象又统一的集合。
- Vector与ArrayList的区别是Vector是线程安全的,故Vector相对于ArrayList的速度稍慢一些。
阅读全文
0 0
- Java数据结构——ArrayList
- Java数据结构——ArrayList简介
- Java数据结构——ArrayList和LinkedList
- 数据结构——ArrayList
- 数据结构(Java语言)——ArrayList简单实现
- 数据结构—顺序表(自己实现Java的ArrayList)
- java中的数据结构--ArrayList
- Java数据结构-ArrayList
- java数据结构之ArrayList
- Java集合—ArrayList
- 数据结构--ArrayList的Java实现
- Java数据结构 ArrayList、LinkList、Vector
- 数据结构-Java实现-ArrayList&LinkedList
- JAVA数据结构-LinkedList,ArrayList,Tree,
- Java数据结构源码分析-ArrayList
- java数据结构 ArrayList源码阅读
- Java数据结构之ArrayList(4)
- Java数据结构--跟着api学数据结构--arraylist
- 1385Problem A:Frog
- HDU4046panda (线段树)
- 【数据结构】范浩强Treap(非旋转平衡树)&可持久化Treap总结
- JVM何时会进行全局GC
- 手动编译安装lamp之mysql
- Java数据结构——ArrayList
- YII2.0多模块配置
- nginx入门与使用
- linux下部署tensorflow环境(二)
- 使用MD5算法
- 打印不大于N的所有素数
- shiro学习之LifecycleBeanPostProcessor的作用
- 二哥OJ(三)
- 细说@Html.ActionLink()的用法