ArrayList和LinkedList的区别 ,ArrayList和LinkedList都是线程安全的吗?

ArrayList和LinkedList都是线程安全的吗

都是线程安全的。

ArrayList和LinkedList的区别及其优缺点 ArrayList和LinkedList的大致区别: ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。

一、同步性 ArrayList,LinkedList是不同步的,而Vestor是同步的。所以如果不要求线程安全的话,可以使用ArrayList或LinkedList,可以节省为同步而耗费的开销。但在多线程的情况下,有时候就不得不使用Vector了。当然,也可以通过一些办法包装ArrayList,LinkedList,使他们也达到同步,但效率可能会有所降低。

二、数据增长 从内部实现机制来讲ArrayList和Vector都是使用Objec的数组形式来存储的。当你向这两种类型中增加元素的时候,如果元素的数目超出了内部数组目前的长度它们都需要扩展内部数组的长度,Vector缺省情况下自动增长原来一倍的数组长度,ArrayList是原来的50%,所以最后你获得的这个集合所占的空间总是比你实际需要的要大。所以如果你要在集合中保存大量的数据那么使用Vector有一些优势,因为你可以通过设置集合的初始化大小来避免不必要的资源开销。

三、检索、插入、删除对象的效率 ArrayList和Vector中,从指定的位置(用index)检索一个对象,或在集合的末尾插入、删除一个对象的时间是一样的,可表示为O(1)。但是,如果在集合的其他位置增加或移除元素那么花费的时间会呈线形增长:O(n-i),其中n代表集合中元素的个数,i代表元素增加或移除元素的索引位置。为什么会这样呢?以为在进行上述操作的时候集合中第i和第i个元素之后的所有元素都要执行(n-i)个对象的位移操作。LinkedList中,在插入、删除集合中任何位置的元素所花费的时间都是一样的—O(1),但它在索引一个元素的时候比较慢,为O(i),其中i是索引的位置。

ArrayList和LinkedList的区别
,ArrayList和LinkedList都是线程安全的吗?图1

JAVA中几种集合(List、Set和Map)的区别

Java中的集合包括三大类,它们是Set、List和Map。它们都处于

java.util

包中,Set、List和Map都是接口。Set中的对象不按特定方式排序,并且没有重复对象。但它的有些实现类能对集合中的对象按特定方式排序,例如TreeSet类,它可以按照默认排序,也可以通过实现

java.util.Comparator

接口来自定义排序方式。List中的对象按照索引位置排序,可以有重复对象,允许按照对象在集合中的索引位置检索对象,如通过list.get(i)方式来获得List集合中的元素。Map中的每一个元素包含一个键对象和值对象,它们成对出现。键对象不能重复,值对象可以重复。Map的功能方法 :  方法put(Object key, Object value)添加一个“值”(想要得东西)和与“值”相关联的“键”(key)(使用它来查找)。方法get(Object key)返回与给定“键”相关联的“值”。可以用containsKey()和containsValue()测试Map中是否包含某个“键”或“值”。标准的Java类库中包含了几种不同的Map:HashMap, TreeMap, LinkedHashMap, WeakHashMap, IdentityHashMap。它们都有同样的基本接口Map,但是行为、效率、排序策略、保存对象的生命周期和判定“键”等价的策略等各不相同。执行效率是Map的一个大问题。看看get()要做哪些事,就会明白为什么在ArrayList中搜索“键”是相当慢的。而这正是HashMap提高速度的地方。HashMap使用了特殊的值,称为“散列码”(hash code),来取代对键的缓慢搜索。“散列码”是“相对唯一”用以代表对象的int值,它是通过将该对象的某些信息进行转换而生成的。所有Java对象都能产生散列码,因为hashCode()是定义在基类Object中的方法。

ArrayList和LinkedList的区别
,ArrayList和LinkedList都是线程安全的吗?图2

版权声明:本文来自用户投稿,不代表【匆匆网】立场,本平台所发表的文章、图片属于原权利人所有,因客观原因,或会存在不当使用的情况,非恶意侵犯原权利人相关权益,敬请相关权利人谅解并与我们联系(邮箱:dandanxi6@qq.com)我们将及时处理,共同维护良好的网络创作环境。

(0)
上一篇 2023年09月15日 15:31
下一篇 2023年09月15日 15:46

相关推荐

  • AI教程:如何批量复制 ,cdr2020如何批量等距离复制?

    cdr2020如何批量等距离复制要在CDR2020中进行批量等距离复制,您可以按照以下步骤操作:首先,选择要复制的对象,然后使用复制工具将其复制到所需的位置。接下来,选择复制的对象,然后使用移动工具将其移动到所需的距离。然后,按住Ctrl键并使用复制工具将对象复制到所需的位置。重…

    2023-10-16
  • CAD字体显示问号怎么办 ,CAD图纸上字体显示问号怎么办?

    CAD图纸上字体显示问号怎么办1.CAD图纸上字体显示问号是设置错误导致的,具体解决方法步骤如下:1、首先找到有问号的字体,使用右键单击它,在弹出的选项界面内选择“特性”,进入该文字的特性表中。2.进入特性表之后,这里需要记住三个重要信息,一个是最上方的“文字”,然后是“图层”后…

    2023-10-16
  • excel中怎么去除重复项 ,excel怎么去除重复项?

    excel怎么去除重复项第一步 选定拟删除重复项区域后在工具菜单栏中找到“数据”按钮第二步 点击“数据”菜单找到“删除重复项”选项第三步 选择需要删除重复项的区域(在有标题时把数据包含标题前面方框点勾)后点确定,完成重复项删除excel多列数据怎么去除重复项求和在Excel多列数…

    2023-10-16
  • 如何在Word文件中添加装订线 ,word文档如何在每一页添加装订线?

    word文档如何在每一页添加装订线在Word文档中添加装订线的方法如下:1. 打开Word文档,点击“页面布局”选项卡,选择“页边距”按钮,打开“页面设置”窗口。2. 在“页面设置”窗口中选择“纸张”选项卡,找到“多页”选项,勾选“装订线”。3. 在“装订线”选项下方,可以设置装…

    2023-10-16
  • Excel电子表格如何自动排序(2种类型)? ,Excel表格如何自动排序?

    Excel表格如何自动排序Excel表格自动排序的方法步骤如下1、打开excel表格,选中需要排序的列。2、点击右上角排序和筛选按钮。3、这里会有三种排序方式,选择需要的一种,点击完成。4、表格即可按照所选进行自动排序。Excel表格如何自动排序excel自动排序数字可以在开始界…

    2023-10-16
  • excel教程_利用Excel计算相对标准偏差(RSD) ,相对标准偏差计算公式?

    相对标准偏差计算公式相对标准偏差(RSD,relative standard deviation)就是指:标准偏差与测量结果算术平均值的比值,用公式表示如下   RSD=S/Χ*100%其中S为标准偏差,x为测量平均值.   相对标准偏差RSD就是变异系数:变异系数的计算公式为:…

    数码科技 2023-10-16
  • 如何删除google play服务 ,怎么删除谷歌play服务?

    怎么删除谷歌play服务操作方法01如何停止google play服务设置——应用管理——全部应用——google play服务——停止02如何删除或卸载google play服务首先要明确的是,google play服务是系统应用,要删除得获得root权限。所以先获得root权…

    2023-10-16
  • Secure CRT怎么使用,图文详细教程 ,Secure CRT怎么使用,图文详细教程?

    Secure CRT怎么使用,图文详细教程1、首先双击软件,打开secure crt软件主界面。2、然后点击如图箭头所指的按钮,弹出如下方框。3、然后输入你服务器的公网ip,用户名,端口的话如果没指定就用这个默认的。4、然后点击确认,会再弹出一个框,让你输入密码。5、输入密码点击…

    2023-10-16
  • Word文档全套快捷键小技巧 ,Word文档全选撤消等快捷键?

    Word文档全选撤消等快捷键1、Word文档中,全选快捷键为Ctrl+A。2、撤销快捷键为Ctrl+Z。3、复制快捷键为Ctrl+C。4、粘贴快捷键为Ctrl+V,复制文字后,按Ctrl+V即可粘贴。5、剪切快捷键为Ctrl+X,选中文字剪切后,按Ctrl+V即可粘贴剪切出来的文…

    2023-10-16
  • 如何制作课程表? ,excel怎么制作课程表左上角?

    excel怎么制作课程表左上角1、打开电脑中的excel表格,我们需要在里面制作一个精美的课程表。2、之后,在表中填写课程安排的时间和礼拜几。调节好行宽和列宽,把字体调到合适大小。3、点击上方工具栏中的“插入”选项卡。4、之后,再点击下方的“形状”功能选项卡。5、点击完成以后会弹…

    2023-10-16