学习笔记面试问题3集合框架

本文深入解析Java集合框架,包括List、Set、Map等接口的区别,ArrayList、LinkedList、Vector的特性和存储性能,以及HashMap、Hashtable、ConcurrentHashMap的对比。探讨了HashSet与HashMap的关系,Iterator与Iterable的工作原理,Comparable与Comparator的使用场景,最后介绍了TreeMap的键值需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习笔记


List,Set,Map的区别
List和Set来自于Collection接口,Map是顶级接口
List元素可以重复,可以添加空值,有序的Set元素不可以重复,允许有一个空值,无序的Mapkey可以有一个null值,value可以存储多个空值,默认无序的

ArrayList,LinkedList,Vector的存储性能和特性
ArrayList和Vector来自于AbstractList,LinkedList来自于AbstractSequentialList
Vector线程安全,同步的,可以通过下标访问,利于查询
ArrayList线程非安全实现,非同步的,可以通过下标访问,利于查询
LinkedList线程非安全,非同步,通过节点访问,利于增删数据

HashMap和Hashtable的区别
都是实现Map接口
HashMap继承自AbstractMap,初始化容量为16,非同步,效率更高,数组+链表+红黑树
Hashtable继承自Dictionary,初始化容量为11,同步方法,在多线程情况下使用,效率低

HashoMap和ConcurrentHashMap的区别
ConcurrentHashMap解决多线程下的安全和效率问题,JDK1.8之前采用的是分段锁技术,JDK1.8之后把分段锁技术给废掉了采用CAS技术

HashSet和HashMap的区别
HashSet底层是HashMap

Iterator迭代器
只有remove方法没有add方法
在遍历的时候,想要移除数据,一般采用迭代器

Iterator和Iterable的区别
able表示一种能力,根据自己的数据结构,重写hasnext和next

Enumeration是什么?和iterator的区别
Enumeration也是一种迭代,但是它没有实现fail-fast(迭代器获取一个集合,已经获取了集合的大小,当他半路的时候删除一个数据,大小与已知的大小不匹配,会越界)

fail-fast和fail-safe(使用CopyOnWriteArrayList方法)的区别,怎样避免
fail-fast更改的是数据本身,fail-safe更改的是数据的副本,占用的空间比较大,数据时效性比较低

Comparable和Comparator的区别
功能:作比较,Collection.sort(list)
Comparable是一个内部比较器,compareTo(T o)
Comparator是一个外部比较器,compare(o1,o2)
TreeMap的key一定要实现比较器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值