A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郑昌奋 中级黑马   /  2013-3-21 15:41  /  2071 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 郑昌奋 于 2013-3-21 20:35 编辑

HashMap/TreeMap/HashSet/TreeSet在什么情况下会优先考虑选择他们的呢?

点评

如果问题未解决,请继续追问回复者,如果问题已经解决,请将分类改为“已解决”,谢谢  发表于 2013-3-21 19:21

4 个回复

正序浏览
徐盼盼 发表于 2013-3-21 16:20
根据你的实际需求啊

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

谢谢您的讲解
回复 使用道具 举报
TreeSet
TreeSet是有序的(必须实现Comparable接口),它会把元素排序,但如果元素没有自然顺序,那就出错。

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

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

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

总的来说,默认用HashMap和HashSet,需要顺序的时候用Tree

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 赞一个!

查看全部评分

回复 使用道具 举报
那要看你的开发需要了,根据需求选择相应的工具

点评

如果可以的话,最好多回答一些,可以帮助到提问者,谢谢  发表于 2013-3-21 19:21
回复 使用道具 举报
根据你的实际需求啊

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

Map集合:该集合存储键值对。保证键的唯一性。
HashMap:底层是哈希表数据结构,允许使用 null 值和 null 键,该集合是不同步的。
TreeMap:底层是二叉树数据结构。线程不同步。可以用于给map集合中的键进行排序。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马