1、HashMap HashMap使用数组+链表的形式存储,初始化的时候,会根据传入的数组大小,找到一个最接近且大于当前值的2的幂,源码中方法如下: /** * Returns a power of two size for the given target capacity. */ static final int tableSizeFor(int cap) { int n = cap - 1; n |= n >>> 1; n |= n >>> 2; n |= n >>> 4; n |= n >>> 8; n |= n >>> 16; return (n < 0) ? 1 : (n >= MAXIMUM_CAPACITY) ? MAXIMUM_CAPACITY : n + 1; } 对传入的值做无符号右移,然后经行一个或操作,最终得到一个大于传入的值的2的幂。 hashmap是通过数组+链表或红黑树的形式存储数据的 transient Node<K,V>[] table.... 有更新! Java中的Map 程序人生
一、数据结构的分类 按逻辑结构分类 集合 线性结构 非线性结构 按存储结构分类: 顺序存储 链式存储 索引存储 散列存储 二、顺序表 存储空间连续 三、链表 存储空间不连续 3.1 单链表 3.2 循环链表 3.3 双链表 四、顺序表和链表的比较 有更新! 数据结构与算法基础--数据结构分类 数据结构