Thinking in java 之:容器介绍
来源:互联网 发布:数据建模是什么 编辑:程序博客网 时间:2024/05/01 13:03
Set和存储顺序:
Set:存入Set的每个元素都必须是唯一的,因为Set不保存重复元素。加入Set不保存重复元素。加入Set的元素必须定义equals()方法以确保对象的唯一性。Set与Collection有完全一样的接口。Set接口不保证维护元素的次序。
HashSet *:为快速查找而设计的Set。存入HashSet的元素必须定义hashCode()
TreeSet:保持次序的Set,底层为树结构。使用它可以从Set中提取有序的序列。元素必须实现Comparable接口。
LinkedHashSet:具有HashSet的查询速度,且内部使用链表维护元素的顺序(插入的次序)。于是在使用迭代器遍历Set时,结果会按元素插入的次序显示。元素也必须定义hashCode()方法。
在HashSet上打星号表示,如果没有其他的限制,这就应该是你默认的选择,因为它对速度进行了优化。
Map接口:
HashMap *:Map基于散列表的实现(它取代了Hashtable)。插入和查询“键值对”的开销是固定的。可以通过构造器设置容量和负载因子,以调整容器的性能。
LinkedHashMao:类似于HashMap,但是迭代遍历它时,取得“键值对”的顺序是其插入次序,或者是最近最少使用(LRU)的次序。只比HashMap慢一点;而在迭代访问时反而更快,因为它使用链表维护内部次序。
TreeMap:基于红黑树的实现。查看”键“或者”键值对“时,它们会被排序(次序由Comparable或Comparator决定)。TreeMap的特点在于,所得到的结果是经过排序的。TreeMap是唯一的带有subMap()方法的Map,它可以返回一个子树。
WeakHashMap:弱键映射,允许释放映射所指向的对象;这是为解决某类特殊问题而设计的。如果映射之外没有引用指向某个”键“,则此”键“可以被垃圾收集器回收。
ConcurrentHashMap:一种线程安全的Map,它不涉及同步加锁。
IdentityHashMap:使用==代替equals()对”键“进行比较的散列映射。
在HashMap上打星号表示如果没有其他的限制,它就应该成为你的默认选择,因为它对速度进行了优化。其他实现强调了其他的特性,因此都不如HashMap快。
- Thinking in java 之:容器介绍
- Thinking in java 集合容器
- Thinking in Java:容器深入研究
- Thinking in java-31 容器-container
- Thinking in Java 之String
- Thinking in Java之Interfaces
- Thinking in java之接口
- Thinking in java4 容器
- Thinking in Java——第十七章-容器的深入研究之HashMap篇
- 《Thinking in Java》对继承的介绍
- Thinking in Java 第11章 持有对象(容器)
- Thinking in java-9 参数化类型和容器
- Thinking in java笔记之控制程序流
- Thinking in Java笔记之初始化清理
- Thinking in Java 附录之编程准则
- Thinking in Java 附录之推荐书籍
- Thinking in Java 之String 格式化
- Thinking in Java 之String 正则表达式
- Linux常用命令——笔记
- bc 29 GTY's birthday gift(矩阵快速幂)
- rpm安装软件
- 1065:生理周期
- 面试算法题
- Thinking in java 之:容器介绍
- spray-routing中的Exception Handling
- POJ 1284:Primitive Roots 求原根的数量
- 详解ORACLE数据库的分区表
- Linux重启中init6与reboot的区别
- Android动画-TweenAnimation
- 试验-探索自动化病毒样本动态行为分析系统中的漏洞
- 微软编译器vs 编译器(cl.exe)和连接器参数
- Android笔记(二十八)通知的使用