vlambda博客
学习文章列表

java集合相关的一些小问题!

hashset的实现原理?

它是基于hashmap实现的,不同的是map是键值对,set只有key,value里面放了一个默认值。

如果hashcode相同equals不同,就会在同一个位置上使用链表串起来,1.8以后如果串的个数超过八个,还会转换为红黑树。


treeset是什么?

里面放的是二叉树,是有顺序的。因此放在里面的对象需要实现compareable接口。

如果在java层面排序,将数据放到这个数据结构里面。这个redis的zset能够排序一样,但是使用的场景比zset还是差一些的。


ArrayLIst的一些小知识点!

  1. ArrayList的内部是一个数组。

  2. 初始的大小是10.

  3. 负载因子是0.75.

  4. 每次扩容一倍。

  5. 线程不安全。


HashMap的一些小知识点!

  1. 底层是数据和链表,jdk1.8之后如果链表数据量超过8个会变成红黑树存储。

  2. 初始大小是16。后续每次扩容都是一倍。

  3. 负载因子是0.75.

  4. 是线程不安全的。

  5. 是如何hash的,并不是直接计算的hashcode,而是计算完之后无符号右移16位,并和原hashcode进行了一次异或,这样是为了避免hash冲突的概率。


------------------------

欢迎访问个人网站:

https://lessthinker.com

欢迎使用个人小程序: