java面试每日三题(6)集合

前言

因为是面向面试题,所以我们直接指向热点面试题。

一、常见的集合底层实现

ArrayList数据结构是数组。
LinkedList数据结构是双向链表。
HashMap底层与HashTable原理相同,Java 8版本以后如果链表长度大于8则链表变成红黑树。
HashTable底层是链地址法组成的哈希表(即数组+单项链表组成)。
HashSet底层是HashMap。
LinkedHashMap底层修改自HashMap,包含一个维护插入顺序的双向链表。
TreeMap底层是红黑树。
LinkedHashSet底层是LinkedHashMap。
TreeSet底层是TreeMap。

二、list、set、map的区别。

list和set是存储单列数据的集合,map是存储键值对这样双列数据的集合。

list中存储的数据是有序并且可重复的。set存储的数据是无序且不重复的。

map中存储数据是没有顺序的,key不重复value是可以重复的。

三、谈一下hashMap什么时候扩容,resize的实现

在hashMap中有数组table,当table的size达到阈值时进行扩容。

扩容需要重新分配一个新数组,新数组是旧数组的两倍,然后遍历旧数组,将旧数组的hash分配到新数组中去。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值