arraylist和linkedlist的区别

arraylist和linkedlist的区别,第1张

arraylist和linkedlist的区别:

一、查找元素方法不同:

1、arraylist可以直接通过数组下标找到元素。

2、linkedlist要通过移动指针遍历每个元素,直到找到需要的元素为止。arraylist查找元素的速度比linkedlist快。

二、空间消耗。

1、arraylist的空间浪费主要体现在在list结尾预留了一定的容量空间。

2、而linkedlist的空间浪费则体现在它的每一个元素都要消耗一定的空间。

三、原理不同。

1、arraylist是基于动态数组实现的非线程安全集合。

2、linkedlist是基于链表实现的非线程安全集合。

四、删除元素。

1、arraylist在新增和删除元素时,可能扩容和复制数组。

2、而linkedlist实例化对象只需要修改指针即可。

数组的容量是固定的,您只能一次获取或设置一个元素的值,而ArrayList或List<T>的容量可根据需要自动扩充、修改、删除或插入数据。

数组可以具有多个维度,而 ArrayList或 List< T> 始终只具有一个维度。但是,您可以轻松创建数组列表或列表的列表。特定类型(Object 除外)的数组 的性能优于 ArrayList的性能。 这是因为 ArrayList的元素属于 Object 类型;所以在存储或检索值类型时通常发生装箱和取消装箱 *** 作。不过,在不需要重新分配时(即最初的容量十分接近列表的最大容量),List< T> 的性能与同类型的数组十分相近。

在决定使用 List<T> 还是使用ArrayList 类(两者具有类似的功能)时,记住List<T> 类在大多数情况下执行得更好并且是类型安全的。如果对List< T> 类的类型T 使用引用类型,则两个类的行为是完全相同的。但是,如果对类型T使用值类型,则需要考虑实现和装箱问题。

可以去查看这个地址:>

1、ArrayList类是一个特殊的数组。它来自于SystemCollections命名空间;通过添加和删除元素,就可以动态改变数组的长度。

2、添加代码,生成新的list列表。

3、添加添加元素按钮代码,获取用户输入的元素个数;,添加新元素;,输出 *** 作信息。

4、添加查看列表按钮代码,遍历列表;输出列表内容;如果列表内容为空,则提示。

5、添加插入元素按钮代码,获取插入位置;获取插入的元素;在指定位置插入新元素;输出 *** 作信息,就完成了。

一:使用synchronized关键字

二:使用CollectionssynchronizedList()

一、 ArrayList概述:

ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存。

ArrayList不是线程安全的,只能用在单线程环境下,多线程环境下可以考虑用CollectionssynchronizedList(List l)函数返回一个线程安全的ArrayList类,也可以使用concurrent并发包下的CopyOnWriteArrayList类。

 ArrayList实现了Serializable接口,因此它支持序列化,能够通过序列化传输,实现了RandomAccess接口,支持快速随机访问,实际上就是通过下标序号进行快速访问,实现了Cloneable接口,能被克隆。

每个ArrayList实例都有一个容量,该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小。随着向ArrayList中不断添加元素,其容量也自动增长。自动增长会带来数据向新数组的重新拷贝,因此,如果可预知数据量的多少,可在构造ArrayList时指定其容量。

在添加大量元素前,应用程序也可以使用ensureCapacity *** 作来增加ArrayList实例的容量,这可以减少递增式再分配的数量。 

注意,此实现不是同步的。如果多个线程同时访问一个ArrayList实例,而其中至少一个线程从结构上修改了列表,那么它必须保持外部同步。

new ArrayList<String>(10)中的10又是什么意思

分配了10个指向string类型的空间(仅仅是对象引用,)。

new ArrayList<MyData>()是默认分配10个MyData对象的空间吗

此时只是分配了对象引用的空间,而具体内存(存储实际数据的)区域此时都未知的

所以后面添加的必须是

listadd(new String(''));

以上就是关于arraylist和linkedlist的区别全部的内容,包括:arraylist和linkedlist的区别、C#中数组,ArrayList和List三者的区别、C#中数组,ArrayList和List三者的区别Unity3d等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9316483.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存