java链表.set_Java中的数组、链表、List、ArrayList、LinkedList、Vector、Set

数组:数组是在内存中存储相同数据类型的连续的空间  -----声明一个数组就是在内存空间中划出一串连续的空间

1、数组名代表的是连续空间的首地址

2、通过首地址可以依次访问数组所有元素

3、元素在数组中的排序叫做下标从零开始

数组的使用

数组长度一旦声明,不可改变不可追加

数组声明缩写

int[ ] arr={12,3,4,8,5,6,6,7,8,8,9,8};

int [ ] arr1=new int[ ]{12,3,4,8,5,6,6,4};

new int[ ]的[ ]一定不能放内存大小

一般区别:

1. ArrayList的实现是基于数组,LinkedList的实现是基于双向链表。

2. 对于随机访问,ArrayList优于LinkedList

3. 对于插入和删除操作,LinkedList优于ArrayList

4. LinkedList比ArrayList更占内存,因为LinkedList的节点除了存储数据,还存储了两个引用,一个指向前一个元素,一个指向后一个元素。

在时间复杂度方面的区别:

对于随机访问,ArrayList的访问速度更快。

对于插入和删除操作,LinkedList 的速度更快。

如果一次性地通过add从集合尾部添加元素,添加完成后只需读取一次,那么建议使用ArrayList,如果频繁的添加或者通过indexOf来查找元素,则用LinkedList

在空间复杂度方面的区别:

在LinkedList中有一个私有的内部类,定义如下:

private static class Entry {

Object element;

Entry next;

Entry previous;

}

LinkedList中的每一个元素中还存储了它的前一个元素的索引和后一个元素的索引。

ArrayList使用一个内置的数组来存储元素,这个数组的起始容量是10,当数组需要增长时,新的容量按如下公式获得:新容量 = 旧容量*1.5 + 1,也就是说每一次容量大概会增长50%

总结:

ArrayList和LinkedList的区别如下:ArrayList和LinkedList都是线程不安全的,所以不是它们的区别。

1. ArrayList的实现是基于数组,LinkedList的实现是基于双向链表。

2. 对于随机访问,ArrayList优于LinkedList,ArrayList可以根据下标以O(1)时间复杂度对元素进行随机访问。而LinkedList的每一个元素都依靠地址指针和它后一个元素连接在一起,在这种情况下,查找某个元素的时间复杂度是O(n)

3. 对于插入和删除操作,LinkedList优于ArrayList,因为当元素被添加到LinkedList任意位置的时候,不需要像ArrayList那样重新计算大小或者是更新索引。

4. LinkedList比ArrayList更占内存,因为LinkedList的节点除了存储数据,还存储了两个引用,一个指向前一个元素,一个指向后一个元素。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值