关于Map的排序问题
2008-12-29 13:49
316 查看
近来做程序的时候需要使MAP遍历出来的对像的顺序应该是输入时候的顺序,但是打出来的顺序是不对的,然后才发现自己忽略了MAP是无序的,所以会出现以下现象:Map<String, String> map = new HashMap<String, String>(); map.put("aaa", "ddd"); map.put("bbb", "bbb"); map.put("ccc", "ccc"); map.put("aaa", "aaa");Iterator<Entry<String, String>> ite = map.entrySet().iterator(); while (ite.hasNext()) { System.out.println("map:" + ite.next().getValue()); }打印出来的是:map:cccmap:aaamap:bbb呵呵,找了好半天终于找到一个MAp接口的实现类,有链表功能的:Map<String, String> linkedMap = new LinkedHashMap<String, String>();
linkedMap.put("aaa", "ddd"); linkedMap.put("bbb", "bbb"); linkedMap.put("ccc", "ccc"); linkedMap.put("aaa", "aaa");ite = linkedMap.entrySet().iterator(); while (ite.hasNext()) { System.out.println("linkeMap:" + ite.next().getValue()); }打印出来是:linkeMap:aaalinkeMap:bbblinkeMap:ccc我要的效果实现了,呵呵,这个linkedMap的性能,官方的说法是这样的:
由于增加了维护链接列表的开支,其性能很可能比 HashMap 稍逊一筹,不过这一点例外:LinkedHashMap 的
collection 视图迭代所需时间与映射的大小 成比例。HashMap
迭代时间很可能开支较大,因为它所需要的时间与其容量 成比例。
链接的哈希映射具有两个影响其性能的参数:初始容量和加载因子。它们的定义与 HashMap
极其相似。要注意,为初始容量选择非常高的值对此类的影响比对 HashMap 要小,因为此类的迭代时间不受容量的影响。
所以要用到遍历的话,基本上和HASHMAP的性能差不多的。
linkedMap.put("aaa", "ddd"); linkedMap.put("bbb", "bbb"); linkedMap.put("ccc", "ccc"); linkedMap.put("aaa", "aaa");ite = linkedMap.entrySet().iterator(); while (ite.hasNext()) { System.out.println("linkeMap:" + ite.next().getValue()); }打印出来是:linkeMap:aaalinkeMap:bbblinkeMap:ccc我要的效果实现了,呵呵,这个linkedMap的性能,官方的说法是这样的:
由于增加了维护链接列表的开支,其性能很可能比 HashMap 稍逊一筹,不过这一点例外:LinkedHashMap 的
collection 视图迭代所需时间与映射的大小 成比例。HashMap
迭代时间很可能开支较大,因为它所需要的时间与其容量 成比例。
链接的哈希映射具有两个影响其性能的参数:初始容量和加载因子。它们的定义与 HashMap
极其相似。要注意,为初始容量选择非常高的值对此类的影响比对 HashMap 要小,因为此类的迭代时间不受容量的影响。
所以要用到遍历的话,基本上和HASHMAP的性能差不多的。
相关文章推荐
- 关于mybatis返回map是排序问题
- 关于Map的排序问题
- 关于map的排序问题。
- 关于map中含数字string的排序问题
- 关于map排序问题
- 关于map中含数字string的排序问题
- 关于map的数据排序问题(hashmap,treemap)
- 关于map的排序问题
- 关于java中Map排序问题
- 关于java map 初始化,遍历,排序的几个解答
- 关于Chrome调试中.min.js.map 404的问题
- java中关于Map的九大问题
- 关于TreeSet的排序问题
- 关于Select Where In 的排序问题
- 记录一下结构体排序的问题(vector,map)
- 关于spring-data-jpa的排序问题
- 关于ImageIO: CGImageRead_mapData 'open' failed ' XXX error = 2 (No such file or directory)问题
- Map拷贝 关于对象深拷贝 浅拷贝的问题
- 小议map排序问题
- UVA 156 Ananagrams 关于二维数组表示的字符串排序的问题