JAVA集合
来源:互联网 发布:网络mc第一红人比赛 编辑:程序博客网 时间:2024/05/21 05:55
ArrayList
底层使用数组实现。创建时有初始容量,当容量不满足是进行扩容操作,然后将原数组内容复制到新数组。因此其查询效率较高。但是当其数据结构发生改变时(如增加时需要扩容,删除操作),其效率较低。
LinkedList
底层使用双向链表实现。每个节点只关注它的前后节点。因此增加,删除操作效率较高。查询时必须进行对链表进行遍历,因此查询效率较低。
private static class Node<E> { E item; // 存储值 Node<E> next; // 指向下一个节点 Node<E> prev; // 指向上一个节点 Node(Node<E> prev, E element, Node<E> next) { this.item = element; this.next = next; this.prev = prev; } }
HashMap
本博文仅为方便博主自己学习。
此文对hashamap讲解更为清楚,有兴趣的同学可以去看看。>https://zhuanlan.zhihu.com/p/21673805
底层使用 数组+单向链表+红黑树存储键值对<K,V>重点在其put()和get()。
基本属性
1.table[] // 存储Node的数组2.Node<E> // 存储数据的对象
数组长度为2的幂次方,
1.hash(key) & (table.length-1)等价于 hash(key) % table.length,但是效率更高2.数组扩容之后,元素需要重新排列。当数组长度为2的幂次方时,排列后的位置不是原位置就是原位置+原容量。提高了扩容后重新排序的效率。
扩容机制
1.将数组长度扩大为原来的2倍(数组长度可以自己设置,但是设置后会默认调整为2的幂次方,所以数组长度一直保持为2的幂次方);2.当链表长度大于8时转化为红黑树;3.当数组长度达到最大值时调整负载因子;
阅读全文
0 0
- Java集合:集合框架
- java集合---set集合
- JAVA 集合 的 集合
- 【集合】Java集合对比
- JAVA集合-Map集合
- JAVA集合-Set集合
- JAVA集合-List集合
- java集合------Map集合
- Java集合----List集合
- Java集合----Set集合
- Java集合----Map集合
- JAVA集合
- JAVA集合
- Java集合
- JAVA集合
- Java集合
- Java集合
- java 集合
- IEnumerable、GetEnumerator、IEnumerator之间的区别
- 系统间通信方式之(ActiveMQ的使用性能优化之干柴烈火4)(十五)
- CHAPTER 14 -Recurrent Neural Networks
- undefined reference to `__aeabi_uidivmod'和undefined reference to `__aeabi_uidiv'错误
- 理解Android Binder架构
- JAVA集合
- 关于等价鞅、反等价鞅、剀利公式、赌徒输光定理(非常有启发意义)
- Boost组件实用工具
- SQLServer中Partition By 函数的使用
- Asset Catalog Compiler Warning Group
- lintcode--上一个排列
- Java基础学习之接口
- Android Studio 使用config.gradle 管理依赖库
- PHP的一个猜拳小游戏