java集合相关的一些小问题!
hashset的实现原理?
它是基于hashmap实现的,不同的是map是键值对,set只有key,value里面放了一个默认值。
如果hashcode相同equals不同,就会在同一个位置上使用链表串起来,1.8以后如果串的个数超过八个,还会转换为红黑树。
treeset是什么?
里面放的是二叉树,是有顺序的。因此放在里面的对象需要实现compareable接口。
如果在java层面排序,将数据放到这个数据结构里面。这个redis的zset能够排序一样,但是使用的场景比zset还是差一些的。
ArrayLIst的一些小知识点!
ArrayList的内部是一个数组。
初始的大小是10.
负载因子是0.75.
每次扩容一倍。
线程不安全。
HashMap的一些小知识点!
底层是数据和链表,jdk1.8之后如果链表数据量超过8个会变成红黑树存储。
初始大小是16。后续每次扩容都是一倍。
负载因子是0.75.
是线程不安全的。
是如何hash的,并不是直接计算的hashcode,而是计算完之后无符号右移16位,并和原hashcode进行了一次异或,这样是为了避免hash冲突的概率。
------------------------
欢迎访问个人网站:
https://lessthinker.com
欢迎使用个人小程序: