Java面试题———集合篇

目录

1、说一说集合类的体系结构

2、聊聊集合类的底层数据结构

3、ArrayList和LinkedList的区别

4、HashMap和HashTable区别

5、HashMap的底层原理

6、HashMap是怎么解决哈希冲突的

7、HashMap的扩容机制是怎样的

8、为何HashMap的数组长度一定是2的次幂?

9、说一下HashSet的实现原理?

10、HashSet如何检查重复?


1、说一说集合类的体系结构

我们常见的集合主要有两大类,分别是单列集合和双列集合

  1. 单列集合的顶级接口是Collection,它下面有两个主要的子接口分别是List和Set

    List的特点是元素有序的,可以重复的;Set的特点是元素无序的,不可重复的

    List下我们常用的类有ArrayList、LinkedList等,Set下我们常用的类有HashSet、LinkedHashSet、TreeSet等

  2. 双列集合的顶级接口是Map,它的特点是每个元素都有键和值两部分组成,而且键不能重复

    Map接口下我们常用的类有:HashMap、LinkedHashMap、TreeMap等

2、聊聊集合类的底层数据结构

集合主要分为双列集合和双列集合

  1. 双列集合都是Map的实现类,主要有HashMap、LinkedHashMap和TreeMap

    • HashMap: JDK1.8之前是由数组+链表组成的,JDK1.8之后,为了提升效率,在当链表的长度>8,并且数组长度>=64的时候,链表就会转换为红黑树

    • LinkedHashMap:继承自HashMap,在HashMap的基础上增加了一条双向链表,来保持键值对的插入顺序。

    • TreeMap:底层是红黑树

  2. 单列集合主要是List和Set

    List有ArrayList和LinkedList,ArrayList底层是数组,查询快,增删慢;LinkedList底层是双向链表,查询慢,增删快

    Set有HashSet、LinkedHashSet和TreeSet,它的实现原理和对应的Map是一样的,底层都是用的对应Map的key实现

3、ArrayList和LinkedList的区别

ArrayList和LinkedList都是Java中的单列结合,都是有序的,可重复的

不同点有下面几个:

  1. 底层数据结构不同:ArrayList 底层是动态数组,而LinkedList底层是双向链表

  2. 使用场景不同&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

啵啵薯条

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值