关于hashmap与linkedhashmap

上传人:第*** 文档编号:32821513 上传时间:2018-02-12 格式:DOCX 页数:19 大小:43.22KB
返回 下载 相关 举报
关于hashmap与linkedhashmap_第1页
第1页 / 共19页
关于hashmap与linkedhashmap_第2页
第2页 / 共19页
关于hashmap与linkedhashmap_第3页
第3页 / 共19页
关于hashmap与linkedhashmap_第4页
第4页 / 共19页
关于hashmap与linkedhashmap_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《关于hashmap与linkedhashmap》由会员分享,可在线阅读,更多相关《关于hashmap与linkedhashmap(19页珍藏版)》请在金锄头文库上搜索。

1、关于 HashMap 与 LinkedHashMap 2011-01-21 15:11:49| 分类: java | 标签:hashmap key value entity util |字号 订阅 关于 HashMap 与 LinkedHashMap2011-01-21HashMap 是无序的, HashMap 在 put 的时候是根据 key 的 hashcode 进行 hash 然后放入对应的地方。所以在按照一定顺序 put 进 HashMap 中,然后遍历出HashMap 的顺序跟 put 的顺序不同(除非在 put 的时候 key 已经按照 hashcode排序号了,这种几率非常小)单

2、纯的 HashMap 是无法实现排序的,这的排序是指,我们将键值对按照一定的顺序 put 进 HashMap 里,然后在进行取键值对的操作的时候,是按照 put 进去的顺序把键值对取出来的。JAVA 在 JDK1.4 以后提供了 LinkedHashMap 来帮助我们实现了有序的HashMap!LinkedHashMap 取键值对时,是按照你放入的顺序来取的。EG:import java.util.HashMap;import java.util.Iterator;import java.util.LinkedHashMap;import java.util.Map;import java.u

3、til.Map.Entry;/* author TEANA E-mail: * version 创建时间:2011-1 -21 下午 02:23:07* DO LinkedHashMap 与 HashMap*/public class LinkedMappublic static void main(String args)/LinkedHashMap 有序Map maps = new LinkedHashMap();maps.put(1, 张三 );maps.put(2, 李四 );maps.put(3, 王五 );maps.put(4, 赵六 );System.out.println(Li

4、nkedHashMap(有序):);Iterator it = maps.entrySet().iterator();while(it.hasNext()Map.Entry entity = (Entry) it.next();System.out.println( key = + entity.getKey() + , value = + entity.getValue() + );/HashMap 无序Map map = new HashMap();map.put(1, 张三);map.put(2, 李四);map.put(3, 王五);map.put(4, 赵六);it = null;S

5、ystem.out.println(HashMap(无序): );it = map.entrySet().iterator();while(it.hasNext()Map.Entry entity = (Entry) it.next();System.out.println( key = + entity.getKey() + , value = + entity.getValue() + );执行结果如下:LinkedHashMap(有序): key = 1, value = 张三 key = 2, value = 李四 key = 3, value = 王五 key = 4, value

6、= 赵六 HashMap(无序): key = 3, value = 王五 key = 2, value = 李四 key = 1, value = 张三 key = 4, value = 赵六 HashMap,LinkedHashMap,TreeMap 应用简介共同点: HashMap,LinkedHashMap,TreeMap 都属于 Map;Map 主要用于存储键(key)值(value)对,根据键得到值,因此键不允许键重复,但允许值重复。 不同点:1.HashMap 里面存入的键值对在取出的时候是随机的,也是我们最常用的一个Map.它根据键的 HashCode 值存储数据,根据键可以直

7、接获取它的值,具有很快的访问速度。在 Map 中插入、删除和定位元素,HashMap 是最好的选择。 2.TreeMap 取出来的是排序后的键值对。但如果您要按自然顺序或自定义顺序遍历键,那么 TreeMap 会更好。 3. LinkedHashMap 是 HashMap 的一个子类,如果需要输出的顺序和输入的相同,那么用 LinkedHashMap 可以实现. 代码实例: package com.lrm.study.testcase; import java.util.HashMap;import java.util.Iterator;import java.util.LinkedHashM

8、ap;import java.util.Map;import java.util.TreeMap; public class MapAppTest /* Create on Nov 9, 2009 by lrm*/public static void main(String args) / TODO Auto-generated method stubMapAppTest.noOrder();MapAppTest.hasOrder();MapAppTest.likedHashMap(); public static void noOrder() System.out.println(-无序(随

9、机输出-); Map map = new HashMap();map.put(1, Level 1);map.put(2, Level 2);map.put(3, Level 3);map.put(4, Level 4);map.put(F, Level F);map.put(Q, Level Q);Iterator it = map.entrySet().iterator();while (it.hasNext() Map.Entry e = (Map.Entry) it.next();System.out.println(Key: + e.getKey() + ; Value: + e.g

10、etValue(); / 有序(默认排序,不能指定)public static void hasOrder() System.out.println(-有序(但是按默认顺充,不能指定)-);Map map = new TreeMap();map.put(F, Level F);map.put(7, Level 1);map.put(8, Level 2);map.put(4, Level 3);map.put(4, Level 4);map.put(Q, Level Q);map.put(E, Level E);Iterator it = map.entrySet().iterator();w

11、hile (it.hasNext() Map.Entry e = (Map.Entry) it.next();System.out.println(Key: + e.getKey() + ; Value: + e.getValue(); public static void likedHashMap() System.out.println(-有序(根据输入的顺序输出)-);Map map = new LinkedHashMap();map.put(F, Level F);map.put(7, Level 1);map.put(8, Level 2);map.put(4, Level 3);m

12、ap.put(4, Level 4);map.put(Q, Level Q);map.put(E, Level E); Iterator it = map.entrySet().iterator();while (it.hasNext() Map.Entry e = (Map.Entry) it.next();System.out.println(Key: + e.getKey() + ; Value: + e.getValue(); 输出结果: -无序(随机输出-Key: 3; Value: Level 3Key: F; Value: Level FKey: 2; Value: Level

13、2Key: 4; Value: Level 4Key: Q; Value: Level QKey: 1; Value: Level 1-有序(但是按默认顺充,不能指定)-Key: 4; Value: Level 4Key: 7; Value: Level 1Key: 8; Value: Level 2Key: E; Value: Level EKey: F; Value: Level FKey: Q; Value: Level Q-有序(根据输入的顺序输出)-Key: F; Value: Level FKey: 7; Value: Level 1Key: 8; Value: Level 2Ke

14、y: 4; Value: Level 4Key: Q; Value: Level QKey: E; Value: Level E HashMap 原理 分类: j2se 2009-12-14 20:39 592 人阅读 评论(3) 收藏 举报 原文地址: http:/ 是一种十分常用的数据结构,作为一个应用开发人员,对其原理、实现的加深理解有助于更高效地进行数据存取。本文所用的 jdk 版本为 1.5。 使用 HashMap Effective JAVA中认为,99%的情况下,当你覆盖了 equals 方法后,请务必覆盖 hashCode 方法。默认情况下,这两者会采用 Object 的“原生

15、”实现方式,即: Java 代码 1. protected native int hashCode(); 2. public boolean equals(Object obj) 3. return (this = obj); 4. java view plaincopy1. protected native int hashCode(); 2. public boolean equals(Object obj) 3. return (this = obj); 4. hashCode 方法的定义用到了 native 关键字,表示它是由 C 或 C+采用较为底层的方式来实现的,你可以认为它返回了该对 象的内存地址;而缺省 equals

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 工程造价

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号