Java集合
文章平均质量分 62
不抱怨,靠自己
小白初学算法,大神们请多多指教。
展开
-
3.Map
⑤如果添加的位置不为空,键不重复,会先以链表的形式添加,当链表长度大于8并且数组长度大于等于64,换转化为红黑树。JDK1.8开始:新元素直接挂在老元素下面,当链表长度大于8且数组长度大于等于64时,链表会转化为红黑树。JDK1.8之前:①创建一个默认长度为16的,加载因子为0.75的数组table。③如果达到了扩容条件,底层会扩容为原来的两倍,把数据全部转移到新的哈希表中。①第一次添加时,底层会创建一个默认长度为16,加载因子为0.75的数组。④如果添加的位置不为空,键重复,会将老元素覆盖。原创 2023-06-01 08:35:09 · 46 阅读 · 0 评论 -
2.Set
当从HashSet中获取元素时,Java会先根据元素的哈希值找到对应的桶位置,然后遍历该桶中的链表,查找是否包含要获取的元素。由于哈希表是无序的,因此链表中的元素顺序可能是随机的。JDK1.8开始:新元素直接挂在老元素下面,当链表长度大于8且数组长度大于等于64时,链表会转化为红黑树。②根据元素的哈希值跟数组的长度计算出存入的位置(int index=(数组长度-1)&哈希值)在HashSet中,元素的存储顺序是不固定的,因此无法通过索引来快速查找元素。底层:基于红黑树的数据结构,增删改查的性能都比较好。原创 2023-06-01 08:31:05 · 52 阅读 · 0 评论 -
1.List
vector和ArrayList很像,底层都是数组,但是vector是线程安全的,大多数方法使用了synchronized关键字,扩容机制是两倍。5.如果添加的元素过多,超过了1.5倍的扩容,则创建的数组长度以实际长度为标准。2.利用空参构造的集合,在底层创建一个默认长度为0的数组。3.添加第一个元素是,底层会创建一个新的长度为10的数组。特点:底层的数据结构是双向链表,查询修改慢,增加删除快。特点:底层是数组,查询修改快,增加删除慢。4.当超过容量时,会扩容为原来的1.5倍。原创 2023-06-01 08:25:45 · 59 阅读 · 0 评论