前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java高频面试题- 每日三连问?【Day10】 — 集合容器篇(二)

Java高频面试题- 每日三连问?【Day10】 — 集合容器篇(二)

作者头像
浩说编程
发布2022-02-23 16:07:12
2850
发布2022-02-23 16:07:12
举报
文章被收录于专栏:Java经验之谈
问题导读

一、说说List、Set、Queue、Map四者的区别?

二、Arraylist与LinkedList 区别?

三、Arraylist和Vector的区别?

01

说说List、Set、Queue、Map四者的区别?

正经回答:

  • List(对付顺序的好帮手):存储的元素是有序的、可重复的。
  • Set(注重独一无二的性质):存储的元素是无序的、不可重复的。
  • Queue(实现排队功能的叫号机):按特定的排队规则来确定先后顺序,存储的元素是有序的、可重复的。
  • Map(用key来搜索的专家):使用键值对(key-value)存储,类似于数学上的函数y=f(x),"x"代表 key,"y"代表value,key是无序的、不可重复的,value是无序的、可重复的,每个键最多映射到一个值

Arraylist与LinkedList 区别?

正经回答:

是否保证线程安全:

ArrayList和LinkedList都是不同步的,也就是不保证线程安全;

底层数据结构:

Arraylist底层使用的是Object数组:

LinkedList 底层使用的是 双向链表 数据结构

插入和删除是否受元素位置的影响:

  • a.ArrayList采用数组存储,所以插入和删除元素的时间复杂度受元素位置的影响。比如:执行add(Ee)方法的时候,ArrayList会默认在将指定的元素追加到此列表的末尾,这种情况时间复杂度就是1)。但是如果要在指定位置i插入和删除元素的话addlint index.Eelement)时间复杂度就为(n-i),因为在进行上述操作的时候集合中第i和第个元素之后的(n-i)个元素都要执行向后位/向前移一位的操作。
  • b.LinkedList采用链表存储,所以,如果是在头尾插入或者删除元素不受元素位置的影响(add(Ee)、addFirst(Ee)、addLast(Ee)、removeFirst()、removeLast()),近似(1),如果是要在指定位置i插入和删除元素的话(add(int index,Eelement) remove(Obiecto))时间复杂度近似为O(n),因为需要先移动到指定位置再插入。

是否支持快速随机访问:

LinkedList不支持高效的随机元素访问,而ArrayList支持

快速随机访问就是通过元素的序号快速获取元素对象(对应于get(int index)方法)。

内存空间占用:

ArrayList的空间浪费主要体现在在list列表的结尾会预留一定的容量空间

而LinkedList的空间花费则体现在它的每一个元素都需要消耗比ArrayList更多的空间(因为要存放直接后继和直接前驱以及数据)。

03

Arraylist和Vector的区别?

正经回答:

ArrayList是List的主要实现类,底层使用Object[]存储,适用于频繁的查找工作,线程不安全;

Vector是List的古老实现类,底层使用Object[]存储,线程安全的。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-02-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 浩说编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 正经回答:
  • 正经回答:
  • 正经回答:
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档