java集合

1、说一下java集合,各自特点与适用情况。List、set、map三者的区别
java集合容器分为collection和map两大类,collection集合的子接口有set、list、queue三种子接口,常用的是set,list。
(1)List(对付顺序的好帮手):存储的元素是有序的,可重复的,常用的实现类有ArrayList,linkedlist和vector。
可以使用Collections.sort(list)进行排序
(2)set(注重独一无二的性质):存储的元素是无序的,不可重复的。常用的实现类是hashset,treeset和linkedhashset。
(3)map(用key搜索的专家):使用键值对存储,key是无序的,不可重复的,value是无序的,可重复的,每个键最多映射一个值,常用的有hashmap,treemap,hashtable,concurrenthashmap。

2、ArrayList和LinkedList的区别
(1)是否保证线程安全:两个都是线程不同步的,也就都不保证线程安全。
(2)底层数据结构:ArrayList底层使用的是Object数组,LinkedList底层用的是双向链表数据结构,JDK1.6用的是循环列表,1.7之后取消了。
(3)插入和删除是否受元素位置影响
-ArrayList:采用数组存储,所以插入和删除元素的时间复杂度受位置影响。
默认将指定的元素追加到列表的末尾,这样时间复杂度是o(1),如果要在指定位置i加入或删除元素的话,时间复杂度为o(n-i),因为第i和第i个之后的元素要执行移一位的操作。
-LinkedList采用链表存储,因此在表头或者表尾插入或者删除元素时间复杂度为o(1),如果指定位置插入,那么时间复杂度是o(n),因为要先移动到指定位置。
(4)是否支持快速随机访问:
LinkedList不支持,ArrayList支持
(5)内存占用空间:
ArrayList的空间浪费主要体现在list列表的结尾会预留一定容量的空间,而LinkedList的空间花费则体现在他每个元素都要消耗比arraylist更多的空间,因为要存放直接后继和直接前驱以及数据。

3、说一说ArrayList
(1)ArrayList底层是object数组,默认长度是10,扩容长度为1.5倍。集合扩容时会创建更大的数组,把原有数组放入到新数组内,支持对数组的快速随机访问,但是插入与删除速度较慢。
(2)elementData是ArrayList的数据域,被transient修饰。
应用场景
ArrayList适合于频繁进行查找,并且插入和删除操作比较少的场景,而LinkedList适用于查询比较少但是插入和删除操作比较多的场景。

4、说一说linkedList
(1)LinkedList是双向链表,比ArrayList的插入和删除速度更快,但是随机访问元素较慢,

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值