1.ArrayList是基于动态数组的数据结构,而LinkedList是基于链表的数据结构。
2.对ArrayList和LinkedList而言,在列表末尾增加一个元素所花的开销都是固定的。对 ArrayList而言,主要是在内部数组中增加一项,指向所添加的元素,偶尔可能会导致对数组重新进行分配;而对LinkedList而言,这个开销是统一的,分配一个内部Entry对象。
3.在ArrayList的 中间插入或删除一个元素意味着这个列表中剩余的元素都会被移动;而在LinkedList的中间插入或删除一个元素的开销是固定的。
4.LinkedList不 支持高效的随机元素访问。
5.ArrayList的空 间浪费主要体现在在list列表的结尾预留一定的容量空间,而LinkedList的空间花费则体现在它的每一个元素都需要消耗相当的空间
可以这样说:当操作是在一列数据的后面添加数据而不是在前面或中间,并且需要随机地访问其中的元素时,使用ArrayList会提供比较好的性能;当你的操作是在一列数据的前面或中间添加或删除数据,并且按照顺序访问其中的元素时,就应该使用LinkedList了
【注】List和Set都是Java的Collection集合类,
区别:list集合元素存放有序,且可重复;set集合元素无序,且不可重复。
ArrayList和LinkedList在性能上各 有优缺点,都有各自所适用的地方,总的说来可以描述如下: 1.ArrayList是基于动态数组的数据结构,而LinkedList是基于链表的数据结构。 2.对ArrayList和LinkedList而言,在列表末尾增加一个元素所花的开销都是固定的。对 ArrayList而言,主要是在内部数组中增加一项
网上有很多
ArrayList
和
Link
List
的各种对比,以前学习这两个集合的时候老师讲的是:查询
ArrayList
快,新增和删除
Link
Link
快。需要频繁查询用
ArrayList
,需要频繁增删用
Link
Link
。
但是网上百度的话说法又不一样。
下面就上代码测试吧:(测试是使用的JDK1.8其他版本结论可能不同,不做版本更变测试)
//先测试新增速度,使用add()方法 先插入10000条数据比较
//比较速度的时候为了不影响 要单独跑 不能两个列表同时插入
public static void mai
集合类存放于
Java
.util 包中,主要有 3 种:set(集)、
list
(列表包含Queue)和 map(映射)。
Iterator:迭代器,可以通过迭代器遍历集合中的数据
Collection:Collection 是集合
List
、Set、Queue 的最基本的接口。
Map:是映射表的基础接口
接下来我们详细介绍下每个接口和实现类~
1.1 Iterato...
假设我们已经获取了绑定到控件的数据源:
DataTable dt1 = DBHelper.GetDataSource();
数据源绑定法(这种的好处是操作简单,只需绑定数据源和设置3个属性即可)
1、为
Tree
List
控件指定数据源,
Tree
List
1.DataSource = dt1;
2、为
Tree
List
控件的KeyFieldNa
ArrayList
和
Link
ed
List
都是
Java
中的集合类,它们的主要
区别
在于底层数据结构不同。
ArrayList
是基于数组实现的,它的内部维护了一个动态数组,可以随时添加或删除元素。由于底层是数组,所以
ArrayList
的随机访问速度很快,但是在插入或删除元素时需要移动其他元素,效率较低。
Link
ed
List
是基于链表实现的,它的内部维护了一个双向链表,可以快速地在任意位置插入或删除元素。由于底层是链表,所以
Link
ed
List
的随机访问速度较慢,但是在插入或删除元素时效率很高。
因此,如果需要频繁地进行插入或删除操作,建议使用
Link
ed
List
;如果需要频繁地进行随机访问操作,建议使用
ArrayList
。