初始化一个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的两种方法(有排序)的更多相关文章

  1. 转载:遍历Map的四种方法

    http://www.cnblogs.com/kristain/articles/2033566.html 遍历Map的四种方法 public static void main(String[] ar ...

  2. Map 迭代 两种方法

    Map 迭代 两种方法 Map<String, String> map=new HashMap<String,String>(); map.put("1", ...

  3. java 遍历map的四种方法

    16:21:42 Map.entrySet() 这个方法返回的是一个Set<Map.Entry<K,V>>,Map.Entry 是Map中的一个接口,他的用途是表示一个映射项( ...

  4. java 遍历Map的4种方法

    在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...

  5. Java中遍历map的四种方法 - 转载

    在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...

  6. 遍历map的四种方法

    方法一  在for-each循环中使用entries来遍历这是最常见的并且在大多数情况下也是最可取的遍历方式.在键值都需要时使用.注意:for-each循环在Java 5中被引入所以该方法只能应用于j ...

  7. Java中遍历Map的几种方法

      转自: http://blog.csdn.net/wzb56/article/details/7864911 方法分为两类: 一类是基于map的Entry:map.entrySet(); 一类是基 ...

  8. java 中遍历Map的几种方法

    方法分为两类: 一类是基于map的Entry:map.entrySet(); 一类是基于map的key:map.keySet() 而每一类都有两种遍历方式: a.利用迭代器 iterator: b.利 ...

  9. 谈谈java中遍历Map的几种方法

    java中的map遍历有多种方法,从最早的Iterator,到java5支持的foreach,再到java8 Lambda,让我们一起来看下具体的用法以及各自的优缺点 先初始化一个map public ...

随机推荐

  1. [Java] 使用Java Visual VM寻找PermGen Space的解决办法

    在Eclipse使用tomcat运行3个项目时,老是报这个错误,以下为错误详情: 2014-5-28 13:47:41 org.apache.catalina.core.StandardWrapper ...

  2. 有了iscsi存储怎么让主机识别以及使用创建lvm

    1.查找安装包:rpm -ivh iscsi-initiator-utils去sf.net下载iscsitarget包make kernel,usr,install开启服务 (0)查看iscsi发现记 ...

  3. WPF之MVVM(Step2)——自己实现DelegateCommand:ICommand

    在自己实现MVVM时,上一篇的实现方式基本是不用,因其对于命令的处理不够方便,没写一个命令都需要另加一个Command的类.此篇主要介绍DelegateCommand来解决上面所遇到的问题. 首先,我 ...

  4. javase基础笔记3——this关键字和内存图

    什么是面向对象? 面向过程. 面向过程:解决一个问题的思路和方法以及步骤 面向对象:把一些具有相同特征的问题抽象成一个对象,用""""对象.方法()" ...

  5. Emacs 之窗口管理

    // */ // ]]> Emacs 之窗口管理 Table of Contents 1. Emacs 窗口相关 1.1. Emacs 里调整 window 大小 1.2. Emacs winn ...

  6. express-6 请求和响应对象(1)

    URL的组成部分 协议: 协议确定如何传输请求.我们主要是处理http和https.其他常见的协议还有file和ftp. 主机名: 主机名标识服务器.运行在本地计算机(localhost)和本地网络的 ...

  7. 去除手机端a标签等按下去背景色

    a,button,input,textarea,label,i,em{/*highlight*/ -webkit-tap-highlight-color: rgba(255,0,0,0); borde ...

  8. Fzu2109 Mountain Number 数位dp

    Accept: 189    Submit: 461Time Limit: 1000 mSec    Memory Limit : 32768 KB  Problem Description One ...

  9. jQuery Cycle Plugin的使用

    jQuery幻灯片效果或者Slideshow效果当中如果不考虑touch效果的话,jQuery Cycle插件实在是太强大了,各种高大上的动画效果,如果想加上touch效果可以结合本blog介绍的wi ...

  10. spring mvc 入门配置

    1. 把所需jar拷贝到工程目录下WEB-INF/lib 2. 配置WEB.xml,配置前端控制器 org.springframework.web.servlet.DispatcherServlet ...