解析:解决哈希冲突的方法有四种,开放地址法、再哈希法、拉链法、公共溢出法,详情参考:https://www.cnblogs.com/little-fly/p/7907935.html,Java8里面,HashMap使用拉链法,ThreadLocal采用开放地址法。
LinkedHashSet:底层是LinkedHashMap,数组加双向链表。通过哈希值决定存储位置,通过双向链表维持次序。
HashMap:底层数组加链表加红黑树(老熟人了)
ThreadLocal:jdbc时保证每个线程开始到结束得到的都是同一个数据库连接(事务的提交和回滚不会发生问题)。底层:ThreadLocal的 get()方法得到的是当前线程的成员变量threadLocals(Thread类的成员变量,所以它对于每个线程都是相互独立的), threadLocals本质 是一个ThreadLocalMap(并没有实现Map接口),Entry(ThreadLocal<?> k, Object v) 底层是一个数组,但是也使用哈希算法确定存储位 置,不过使用开放定址法解决哈希冲突。
TreeMap:数组加红黑树(有序,线程不安全,不允许空值空键)