黑马程序员技术交流社区

标题: 关于Map集合 [打印本页]

作者: 赵晓波    时间: 2013-1-11 00:42
标题: 关于Map集合
Map存储的对象遍历打印出来的是有序的吗?如果有是按什么排序的呢????请各位大侠指点!!!!
作者: 陈丽莉    时间: 2013-1-11 08:21
java中的Map都是以键值对(key<--->value)的形式存储的,没有顺序。比如,遍历时若利用keyset,可以根据key值得到values。

如果用LinkedHashMap,存储是按照你插入数据的先后顺序;
如果用TreeMap,默认是按键的升序排列的。

作者: 黄锦成    时间: 2013-1-11 14:14
hashMap是无序的;TreeSet有序,默认按照元素的自然顺序。可以定义排序规则
作者: 夏振博    时间: 2013-1-12 01:36
Map内部有两个属性:key(键)和value(值)。它们主要是保证键的,
题外话(Set集合底层也是用的Map,是把元素存在Map的键上,值是系统分配的,你看不见)
下面是我记的笔记跟你分享下:
HashMap特性
1.底层使用哈希表结构
2.无序!
3.线程不安全的!
4.对于常用方法可以保证稳定的性能!
5.因为使用哈希表,所以键元素类型必须重写equals()和hashCode()方法
HashMap
           它要求键元素类型必须重写hashCode()和equals()来保证唯一性,如果hashCode()相等,再使用equals()比较,
           如果hashCode()不相等,就        不再使用equals()比较。
TreeMap的特性
1.底层使用二叉树结构;
2.有序!使用键类型的自然顺序,或者TreeMap的比较器排序;
3.使用TreeMap要求键类型有自然顺序,或者给TreeMap提供比较器;
TreeMap
            要求元素类型有自然顺序,只要实现了Comparable<T>接口的类就有了自然顺序,必须实现接口的compareTo()方法进行比较,
            写不完整的compareTo()容易造成TreeSet出问题。
       如果元素没有自然顺序比较,可以创建TreeSet()时提供一个比较器,即:Comparator接口。
作者: 赵晓波    时间: 2013-1-12 23:41
arno942 发表于 2013-1-12 01:36
Map内部有两个属性:key(键)和value(值)。它们主要是保证键的,
题外话(Set集合底层也是用的Map,是把 ...

谢谢啊!




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