一:hashtable线程安全,不支持null键和值,hashmap支持null键和值,treemap是红黑树实现的,可以通过key的comparotor实现排序,还有原始类型的自然顺序,它的get,remove,add都是logn时间复杂度
二:hashmap 的实现原理,负载因子,容量,多线程导致的循环占用cpu,size不准确
三:
四:用到集合的时候一定要考虑自己创建的对象是否需要从新实现equals和hashcode方法。如果用到hashmap,一定要注意这俩个方法。这俩个都要实现,不能漏一个。
五:linkHashMap 的遍历顺序符合插入的顺序,注意,这种数据结构可以用来实现缓存删除策略,最近最少使用的缓存删除策略。有个构造方法可以实现这种需求
六:treemap就是根据键的顺序决定的,实现comparable或者comparator接口
七:comparato 的实现与eqauls一致
八:hashmap结构
九:hashmap的使用实在第一次使用的时候,没有在构造函数初始化的。
十:hashmap源码:主要的逻辑主要是在putvalue中,大于负载因子*容量就会扩容,而且会扩容2倍。达到一定的值就会转为树
树化的根本问题是安全,如果map遇到攻击就会变成链表,转为树,可以提高性能,避免拖垮服务器
import java.util.LinkedHashMap...
极客时间版权所有: https://time.geekbang.org/column/article/8053
原文地址:https://www.cnblogs.com/hanguocai/p/10013173.html
时间: 2024-11-05 23:36:00