集合List,Set,Map的区别,以及list集合的介绍

1、说说List,Set,Map三者的区别?

(1)List (对付顺序的好帮⼿): 存储的元素是有序的、可重复的。

List的子类特点:

ArrayList:底层数据结构是数组,查询快,增删慢;

Vector:底层数据结构是数组,查询快,增删慢—线程安全,效率低;

Linkedlist:底层数据结构是链表,查询慢,增删快—线程不安全,效率高。

 

(2) Set (注重独⼀⽆⼆的性质): 存储的元素是⽆序的、不可重复的。

 

(3) Map (⽤ Key 来搜索的专家): 使⽤键值对(kye-value)存储,Key 是⽆序的、不可重复的,value 是⽆序的、可重复的,每个键最多映射到⼀个值(multimap除外)。

 

2、Arraylist 与 LinkedList 区别?

(1) 是否保证线程安全: ArrayLis和LinkedLis都是不同步的,也就是不保证线程安全;

(2) 底层数据结构:Arraylist底层使⽤的是Object数组;LinkedList 底层使⽤的是双向链表数据结构

(3)插⼊和删除是否受元素位置的影响:① ArrayList采⽤数组存储,所以插⼊和删除元素的时间复杂度受元素位置的影响。 ②LinkedList 采⽤链表存储,所以对于add(E e)⽅法的插⼊,删除元素时间复杂度不受元素位置的影响

(4) 是否⽀持快速随机访问:LinkedList不⽀持⾼效的随机元素访问,⽽ ArrayList ⽀持。

(5) 内存空间占⽤:ArrayList的空间浪费主要体现在在list列表的结尾会预留⼀定的容量空间,⽽LinkedList 的空间花费则体现在它的每⼀个元素都需要消耗⽐ ArrayList 更多的空间(因为要存放直接后继和直接前驱以及数据)

 

3、ArraysList和Vector及其扩容机制

(1)ArrayList 是 List 的主要实现类,底层使⽤ Object[ ] 存储,适⽤于频繁的查找⼯作,线程不安全 ;Vector 是 List 的古⽼实现类,底层使⽤ Object[ ] 存储,线程安全的。

(2)扩容机制:

ArrayList的默认初始容量为10,当然也可以自定义指定初始容量,随着动态的向其中添加元素,其容量可能会动态的增加,那么扩容的公式为:新容量 = 旧容量/2 + 旧容量;Vector的初始大小为10,如果没有指定每次增长的大小,则默认是翻倍增长。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值