Java面试复习---Java集合框架


前言

本文是Java面试复习系列中的Java集合矿建,后面会陆续有该系列其他篇章,并且会一直维护。本系列都为网上资源整理而来,如有问题,及时联系。


Java集合框架

1.ArrayList和LinkList

ArrayListLinkList
线程多线程不安全多线程不安全
底层数据结构Object数组双链表
特点查找插入、删除
默认容量10
扩容1.5倍+1
内存占用

2.ArrayList和Vector

ArrayListVector
线程多线程不安全多线程安全
同步不同步所有方法都同步
容量1010
扩容1.5n+12n

3.HashMap

  • HashMap底层是数组和链表结合在一起使用也就是链表散列。
  • 拉链法:将链表和数组结合。数组中每一格就是一个链表。
  • Jdk1.8之后,当链表长度大于阈值(默认为8)时,将链表转化为红黑树,减少搜索时间。
  • HashMap总是使用2的幂作为哈希表的大小。为了提高效率,需要对hash值进行取模运算,计算方法为“(n - 1) & hash”

4.HashMap和Hashtable

HashMapHashtable
线程非线程安全线程安全(synchronized)
效率低(基本淘汰)
容量1611
扩容2倍2n+1

5.HashSet和HashMap区别

HashMapHashSet(底层基于HashMap)
实现了Map接口实现Set接口
存储键值对存储对象
put方法向map添加元素add方法向set添加函数
使用key计算Hashcode使用成员对象计算HashCode
速度快

6.总结

线程容量扩容底层
ArrayList多线程不安全101.5n+1数组
LinkList多线程不安全双链表
Vector多线程安全102n数组
HashMap非线程安全162n链表散列
HashTable线程安全112n+1
HashSet非线程安全162n基于HashMap

7.List、Map、Set 三个接口,存取元素时,各有什么特点?

  • List 以特定次序来持有元素,可有重复元素。
  • Set 无法拥有重复元素,内部排序。
  • Map 保存 key-value 值,value 可多值。

8.Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是 equals()?

  • Set 里的元素是不能重复的,用 equals ()方法来区分重复与否。
  • 覆盖 equals() 方法用来判断对象的内容是否相同,而“==”判断地址是否相等,用来决定引用值是否指向同一对象。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值