- 浏览: 216063 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
junzi2013:
df
黑马程序员:MyEclipse9 常用快捷键 中英文对照 及 快速get set方法 -
junzi2013:
dfsdafadsfsd
黑马程序员:MyEclipse9 常用快捷键 中英文对照 及 快速get set方法 -
idealab:
博主说的OpenCSV, JavaCSV, SuperCSV都 ...
csv调研 -
tanxin:
楼主怎么解决这个问题的呢?
坑爹的zookeer -
yy22258867:
:twisted:
黑马程序员19-7:foreach遍历核心源码,遍历HashMap需要用map.keySet()或map.entrySet()
HashMap是无序的,HashMap在put的时候是根据key的hashcode进行hash然后放入对应的地方。所以在按照一定顺序put进HashMap中,然后遍历出HashMap的顺序跟put的顺序不同(除非在put的时候key已经按照hashcode排序号了,这种几率非常小)
单纯的HashMap是无法实现排序的,这的排序是指,我们将键值对按照一定的顺序put进HashMap里,然后在进行取键值对的操作的时候,是按照put进去的顺序把键值对取出来的。
JAVA在JDK1.4以后提供了LinkedHashMap来帮助我们实现了有序的HashMap!
LinkedHashMap取键值对时,是按照你放入的顺序来取的。
import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; import java.util.Map.Entry; /** * @author TEANA E-mail: mmz06@163.com * @version 创建时间:2011-1-21 下午02:23:07 * @DO LinkedHashMap与HashMap */ public class LinkedMap { public 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("LinkedHashMap(有序):"); 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; System.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 = 赵六 ]
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值存储数据,根据键可以直接获取它的值,具有很快的访问速度。在Map 中插入、删除和定位元素,HashMap 是最好的选择。
2.TreeMap取出来的是排序后的键值对。但如果您要按自然顺序或自定义顺序遍历键,那么TreeMap会更好。
3. LinkedHashMap 是HashMap的一个子类,如果需要输出的顺序和输入的相同,那么用LinkedHashMap可以实现.
import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; 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 stub MapAppTest.noOrder(); MapAppTest.hasOrder(); MapAppTest.likedHashMap(); } public static void noOrder() { System.out.println("------无序(随机输出------"); 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.getValue()); } } // 有序(默认排序,不能指定) 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(); while (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"); map.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 3
Key: F; Value: Level F
Key: 2; Value: Level 2
Key: 4; Value: Level 4
Key: Q; Value: Level Q
Key: 1; Value: Level 1
------有序(但是按默认顺充,不能指定)------
Key: 4; Value: Level 4
Key: 7; Value: Level 1
Key: 8; Value: Level 2
Key: E; Value: Level E
Key: F; Value: Level F
Key: Q; Value: Level Q
------有序(根据输入的顺序输出)------
Key: F; Value: Level F
Key: 7; Value: Level 1
Key: 8; Value: Level 2
Key: 4; Value: Level 4
Key: Q; Value: Level Q
Key: E; Value: Level E
package cn.itcast.p1.map.demo; import java.io.File; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; public class LinkedHashMapDemo { /** * @param args */ public static void main(String[] args) { File f= null; HashMap<Integer,String> hm = new LinkedHashMap<Integer,String>(); hm.put(7, "zhouqi"); hm.put(3, "zhangsan"); hm.put(1, "qianyi"); hm.put(5, "wangwu"); Iterator<Map.Entry<Integer,String>> it = hm.entrySet().iterator(); while(it.hasNext()){ Map.Entry<Integer,String> me = it.next(); Integer key = me.getKey(); String value = me.getValue(); System.out.println(key+":"+value); } } }
详细请查看:http://edu.csdn.net/heima -------
发表评论
-
Java中的IO整理完整版
2013-02-15 17:23 662http://developer.51cto.com/art/ ... -
Myeclipse中导入zip文件查看源代码
2012-09-21 23:35 1001用Myeclipse的时候,出现无法查看源码的话,导入jdk文 ... -
==与equals
2012-09-13 20:15 595一般基本数据类型的比较用 == 当涉及到对象、字符串的时候,就 ... -
多线程课程002:线程范围内的共享变量
2012-09-13 16:47 907package cn.itcast.heima2; ... -
多线程课程001:线程安全的问题
2012-09-13 14:37 772下面的做法,会发现输出结果被打断了。 package co ... -
多线程课程001:线程安全的问题
2012-09-13 11:14 752package com.lee.thread; pu ... -
内部类的实际应用
2012-09-13 11:01 621public class TraditionalThreadS ... -
Java接口
2012-09-11 12:07 724Java接口的方法只能是抽象的和公开的,Java接口不能有构造 ... -
移位运算符
2012-09-11 09:31 806移位运算符 <<左移 a<<b,a转 ... -
【总结】gridbaglayout布局管理器
2012-08-15 11:19 660http://blog.sina.com.cn/s/blog_ ... -
【练习_00010】java不重复随机数
2012-08-14 01:26 655package com.heima.test; impo ... -
【练习】判断一个字符串中某些字段出现的次数
2012-08-14 01:08 934package com.heima.test; im ... -
选择、冒泡、折半排序查找方法
2012-08-13 15:06 1174import java.util.Arrays; i ... -
自己写的杨辉三角
2012-08-12 16:41 765package com.lee.graphic; p ... -
交换两个数的位置,不用中间变量
2012-08-06 02:28 1076a ^= b; b ^= a; a ^= b; 1 ... -
未解问题,定时器无法自定义切换时间
2012-07-30 18:08 976package com.heima.test004.enu ... -
黑马程序员:设计模式,享元模式flyweight
2012-07-23 02:13 0如果有很多很小的东西,对象,当他们有很多属性是相同的,就可以把 ... -
黑马程序员:for综合图形整合结晶
2012-07-23 01:16 773package Graph; public clas ... -
JS: js获取字符串长度
2012-07-20 18:01 0<SCRIPT LANGUAGE="Jav ... -
传智27-2: 模拟Tocat浏览器,写网页蜘蛛爬虫,抓取网页信息
2012-07-12 17:03 0package cn.itcast.net.p2.ie_s ...
相关推荐
HashTable和LinkedHashMap 线程数 图形用户界面 节点和二进制搜索树的创建 HTML 该项目的重点是帮助用户学习如何创建二进制搜索树。 二叉搜索树,意味着一个节点包含数据(在这种情况下为数字),该数据被分支为...
Javascript LinkedHashMap 该实用程序可利用Javascript Object的功能作为哈希图,并为您提供插入顺序。 如果您需要通过键随机访问一个值,但又需要知道谁是您的直接邻居,则很有用。 旋转木马。
[pache.camel.spring.Main.main()] SpringCamelContext INFO Apache Camel 2.13.3 (CamelContext: camel-1) 在 0.282 秒内启动 [mel-1) 线程 #0 - timer://foo] MyEvaluator DEBUG 评估: value [mel-1) thread #0 ...
深入Java集合学习系列(四): LinkedHashMap的实现原理
输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 algorithm.lru LRUCache: 基于JavaLinkedHashMap实现的 LRU 算法 algorithm.consistentHashing ConsistentHash: 一致性Hash算法 algorithm.cap ...
Maps :HashMap用于创建和删除,LinkedHashMap用于读取和更新。 集合:HashSet用于创建,更新和删除,LinkedHashSet用于读取。 全部:LinkedList用于创建,ArrayList用于读取,LinkedHashMap用于更新,HashMap...
1.更适合零基础学员: ·自Java语言起源始,循序渐进,知识点剖析细致且每章配备大量随堂练习,让你步步为营,学得透彻、练得明白 ·拒绝晦涩难懂的呆板教学,宋老师语言生动幽默,举例形象生动深入浅出,迅速让你...
1.更适合零基础学员: ·自Java语言起源始,循序渐进,知识点剖析细致且每章配备大量随堂练习,让你步步为营,学得透彻、练得明白 ·拒绝晦涩难懂的呆板教学,宋老师语言生动幽默,举例形象生动深入浅出,迅速让你...
LinkedHashMap Set IO 集合 源码学习 equals 编码规范 注解-未总结 :spider_web:前端 :revolving_hearts:数据结构和算法 CH LFU LRU :woman_biking:网络 :hollow_red_circle:操作系统 Linux :information:数据库 ...
##1。 字符串和数组字符串和数组 字符串是通过引用传递的吗? ##2。 常用方法 比较器与可比较 hashCode() 和 equals() 之间的契约 Java是按引用还是按值传递对象? 迭代与递归 ##3。 类和接口 什么是实例初始化器? ...
都在O(1) 解决方案 LinkedHashMap + 重写的removeEldestEntry方法备注: LinkedHashMap有两种迭代顺序:访问顺序或插入顺序 地图+双链表 最不常用 只不过是从缓存中删除最不常用的项目以将新数据放入缓存中 有时与...
leetcode下载 ...1. initialCapacity, 初始大小. // 2. loadFactor, 负载因子. // 3. accessOrder, true:基于访问顺序排序, false:基于插入顺序排序. this.map = new LinkedHashMap(0, 0.75f, true); }
JImmutables.map() 树状图 JImmutableMap JImmutables.sortedMap() JImmutables.sortedMap(Comparator) LinkedHashMap JImmutableMap JImmutables.insertOrderMap() 哈希集 JImmutableSet
mapData = new LinkedHashMap< String> (); mapData . put( " shamu " , " Nexus 6 " ); mapData . put( " fugu " , " Nexus Player " ); mapData . put( " volantisg " , " Nexus 9 (LTE) " ); mapData . put...
java7 hashmap源码 learning-record - 学习轨迹记录 10月1号 7月18号 基础算法:反转单向链表 7月16号 7月11号 7月9号 ...HashTable和HashMap的区别详解 ...7月1号 ...[HashMap,LinkedHashMap,TreeMap的区别]
java jdk1.8 源码 Java-source-reading 缓慢更新一些个人学习java相关源码过程中的笔记,在这里你将不可避免地看到以下情况: 个别不懂/没想好的地方留空待补全 限于个人水平出现的解读错误 ...LinkedHashMap
1、Arrays.sort实现原理和Collections.sort实现原理。 答:Collections.sort方法底层会调用Arrays.sort方法,底层实现都是TimeSort实现的。TimSort算法就是找到已经排好序数据的子序列,然后对剩余部分排序,然后...
将LinkedHashMap转换为json,反之亦然 如何使用 LinkedHashMap requestData = new LinkedHashMap(); LinkedHashMap auth =新的LinkedHashMap(); auth.put(“ ServiceName”,“ Login”); auth.put(“ ...
LinkedHashMap (done) IdentityHashMap (done) TreeMap (done) WeakHashMap (done) 并发集合 ArrayBlockingQueue(done) LinkedBlockingDeque (done) LinkedBlockingQueue (done) PriorityBlockingQueue (done) ...
LinkedHashMap Java 多线程 多线程中的常见问题 synchronize 关键字原理 多线程的三大核心 对锁的一些认知 ReentrantLock 实现原理 ConcurrentHashMap 的实现原理 线程池原理 深入理解线程通信 交替打印奇偶数 JVM ...