Thinking in java 之:容器介绍
2015-09-10 10:54
429 查看
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快。
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快。
相关文章推荐
- Mahout--最基本的推荐系统的JAVA代码
- Java中equals和==的区别
- Zookeeper Api(java)入门与应用(转)
- 2015年9月10日 struts2TEST
- Java:对象的强、软、弱和虚引用
- Spring mvc视图解析器
- eclipse设置maven加载国内镜像
- Java变量参数
- How to setup Eclipse with WinAVR and the Eclipse plugin AVR-eclipse
- 配置Eclipse自动编译NDK/JNI
- JAVA基础学习(七)---面向对象三---继承,接口与 抽象类
- java多态性实例
- Java自定义标签库的开发及其工作流程的解读
- 浅谈spring中BeanDefinitionDocumentReader中的作用
- java实现Fibonacci算法实例
- Jenkins+maven+checkstyle对java代码进行静态代码分析
- Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
- JAVA运行时问题诊断-工具应用篇
- Eclipse下使用JUnit Test
- Java中key可以重复的Map集合:IdentityHashMap