
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
单独的使用方法是可以保证线程安全的。可以看出是个List,可以克隆,可以序列化,可以使用下标访问。可以看出这个方法使用sychronized修饰。默认初始化长度为10,扩容时候的增量为两倍。不扩容的时候O(1),扩容O(N)组合成的复合方法,可能抛出。
【代码】6.Java SDK源码分析系列笔记-SynchronizedList。
1.7的put操作是头插入的。两个线程同时put并且resize的时候会出现环形链表的情况,所以get操作会出现死循环。遍历时(get)执行删除操作(remove)会抛出这个异常,这叫做fast-fail机制。resize中有个transfer,需要把旧数组中的所有元素转移到新的数组中。put操作中判断key为NULL的时候,会调用putForNullKey。不是计算Hash后对table.len
底层使用TreeMap实现,value使用newObject作为占位符。
基于红黑树(平衡二叉搜索树)实现,效率为O(logN)的key-value对。
底层使用LinkedHashMap实现,value使用newObject作为占位符。
HashSet底层是通过HashMap实现的,value使用new Object()作为占位符。
同get方法找到节点,删除的操作就是链表节点的删除操作。初始化容量为11,默认的加载因子为0.75。使用链地址法(单链表)解决Hash冲突。可克隆,可序列化,实现了Map接口。使用synchronized修饰。线程安全的hashmap。
是一个队列,只不过加上了优先级的概念,换句话说队列里的元素是根据某种规则排好序的输出3. 源码分析3.1. 属性3.2. 有参构造initFromCollection可以看出主要有两个步骤,一个是建立初始化元素到数组中,另一个是维护堆的属性







