遍历Map的两种方法(有排序)
初始化一个map
Map<String, String> map = new HashMap<String, String>();
map.put("1", "hell");
map.put("2", "hello");
map.put("3", "hel");
map.put("4", "hello");
1、第一种方式,普遍使用
Set<String> keySet = map.keySet();
for (String key : keySet) {
System.out.println("key= " + key + " and value= " + map.get(key));
}
2、第二种方式,容量大时推荐使用
Set<Map.Entry<String,String>> entySet = map.entrySet();
for (Map.Entry<String, String> entry : entySet) {
System.out.println("key= " + entry.getKey() + " and value= "
+ entry.getValue());
}
实验发现输出的顺序是乱的,排个序吧
1、按照key值排序
首先写个排序类
private static class KeyComparator implements
Comparator<Map.Entry<String, String>> {
public int compare(Map.Entry<String, String> m,
Map.Entry<String, String> n) {
return m.getKey().compareTo(n.getKey());
}
}
把数据放在list里边才可以使用
List<Map.Entry<String, String>> list = new ArrayList<Map.Entry<String, String>>();
list.addAll(map.entrySet()); KeyComparator kc = new KeyComparator();
Collections.sort(list, kc);
for (Iterator<Map.Entry<String, String>> it = list.iterator(); it
.hasNext();) {
System.out.println(it.next());
}
2、按照Value值排序
private static class ValueComparator implements
Comparator<Map.Entry<String, String>> {
public int compare(Map.Entry<String, String> m,
Map.Entry<String, String> n) {
return m.getValue().compareTo(n.getValue());
}
}
排序输出
list.clear();
list.addAll(map.entrySet());
ValueComparator vc = new ValueComparator();
Collections.sort(list, vc);
for (Iterator<Map.Entry<String, String>> it = list.iterator();
it.hasNext();) {
System.out.println(it.next());
}
Tips: 如有错误请指出,我会及时修改
遍历Map的两种方法(有排序)的更多相关文章
- 转载:遍历Map的四种方法
http://www.cnblogs.com/kristain/articles/2033566.html 遍历Map的四种方法 public static void main(String[] ar ...
- Map 迭代 两种方法
Map 迭代 两种方法 Map<String, String> map=new HashMap<String,String>(); map.put("1", ...
- java 遍历map的四种方法
16:21:42 Map.entrySet() 这个方法返回的是一个Set<Map.Entry<K,V>>,Map.Entry 是Map中的一个接口,他的用途是表示一个映射项( ...
- java 遍历Map的4种方法
在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...
- Java中遍历map的四种方法 - 转载
在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...
- 遍历map的四种方法
方法一 在for-each循环中使用entries来遍历这是最常见的并且在大多数情况下也是最可取的遍历方式.在键值都需要时使用.注意:for-each循环在Java 5中被引入所以该方法只能应用于j ...
- Java中遍历Map的几种方法
转自: http://blog.csdn.net/wzb56/article/details/7864911 方法分为两类: 一类是基于map的Entry:map.entrySet(); 一类是基 ...
- java 中遍历Map的几种方法
方法分为两类: 一类是基于map的Entry:map.entrySet(); 一类是基于map的key:map.keySet() 而每一类都有两种遍历方式: a.利用迭代器 iterator: b.利 ...
- 谈谈java中遍历Map的几种方法
java中的map遍历有多种方法,从最早的Iterator,到java5支持的foreach,再到java8 Lambda,让我们一起来看下具体的用法以及各自的优缺点 先初始化一个map public ...
随机推荐
- 解决 CentOS网卡eth0启用不了问题
转自:http://www.centoscn.com/CentosBug/osbug/2014/0423/2850.html [root@localhost Desktop]# service net ...
- xcrun: error: active developer path ("/XX") does not exist
MAC OS 10.9下执行命令 svn --version 报出如下错误: xcrun: error: active developer path ("/Users/username/Do ...
- JS对Array进行自定制排序
JS对Array进行自定制排序,简单的做一个记录,代码如下所示: //Test function function myFunction(){ var myArr = new Array(); var ...
- 接着上一篇 《Is WPF dead》
最近美国的PM传来消息,说微软在收集开发者的意见,会对WPF进行改进,微软会主要在1) performance 2) interop 3) touch and 4) access to WinRT A ...
- Linux学习笔记(2)Linux学习注意事项
1 学习Linux的注意事项 ① Linux严格区分大小写 ② Linux中所有内容均以文件形式保存,包括硬件,如硬件文件是/deb/sd[a-p] ③ Linux不靠扩展名区分文件类型,但有的文件是 ...
- C#分布式缓存Couchbase使用
目前C#业界使用得最多的 Cache 系统主要是 Memcached和 Redis. 这两个 Cache 系统可以说是比较成熟的解决方案,也是很多系统当然的选择. 一.简介 目前C#业界使用得最多的 ...
- windows加入path路径
右键我的电脑,属性:高级系统设置,高级,环境变量:在系统变量中选path,编辑:将python安装路径加入即可(注意分号):
- 51nod 1051 求最大子矩阵和
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1051 1051 最大子矩阵和 基准时间限制:2 秒 空间限制: ...
- 工具:使用jekyll生成静态网站
在使用前端框架构建网页而不使用后端平台与数据库,即没有服务器的条件下读取文件夹其他文件,浏览器可能会阻止访问.对于这种静态构建可以使用简单的生成工具jekyll.它主要适用于将静态文件生成静态网站,在 ...
- 现代JavaScript
1.async(异步)属性以及defer(延迟)属性 2.load事件是在所有资源被完全加载后才触发 3.domready,在DOM加载之后以及资源加载之前被触发,以DOMContentLoaded的 ...