黑马程序员技术交流社区

标题: HashMap/TreeMap/HashSet/TreeSet [打印本页]

作者: 郑昌奋    时间: 2013-3-21 15:41
标题: HashMap/TreeMap/HashSet/TreeSet
本帖最后由 郑昌奋 于 2013-3-21 20:35 编辑

HashMap/TreeMap/HashSet/TreeSet在什么情况下会优先考虑选择他们的呢?
作者: Walking Walking    时间: 2013-3-21 16:20
根据你的实际需求啊

Set:无序,不可以重复元素。
HashSet:数据结构是哈希表。线程是非同步的。
TreeSet:可以对Set集合中的元素进行排序。

Map集合:该集合存储键值对。保证键的唯一性。
HashMap:底层是哈希表数据结构,允许使用 null 值和 null 键,该集合是不同步的。
TreeMap:底层是二叉树数据结构。线程不同步。可以用于给map集合中的键进行排序。
作者: wangjinyu501    时间: 2013-3-21 16:21
那要看你的开发需要了,根据需求选择相应的工具
作者: qintoko    时间: 2013-3-21 16:28
TreeSet
TreeSet是有序的(必须实现Comparable接口),它会把元素排序,但如果元素没有自然顺序,那就出错。

HashSet特性
不同步,即线程不安全的
无序
无重复元素(所有Set都是这个特性)
底层使用哈希表结构

HashMap特性
底层使用哈希表结构
因为使用哈希表,所有键元素类型必须重写equals()和hashCode()方法

TreeMap的特性
底层使用二叉树结构;
有序!使用键类型的自然顺序,或者TreeMap的比较器排序;
使用TreeMap要求键类型有自然顺序,或者给TreeMap提供比较器;

总的来说,默认用HashMap和HashSet,需要顺序的时候用Tree
作者: 郑昌奋    时间: 2013-3-21 20:34
徐盼盼 发表于 2013-3-21 16:20
根据你的实际需求啊

Set:无序,不可以重复元素。

谢谢您的讲解




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2