Map排序
TreeMap: 能够把它保存的记录根据键(key)排序,默认是按升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。TreeMap不允许key的值为null。非同步的。
TreeMap默认按key进行升序排序,如果想改变默认的顺序,可以使用比较器:
- Map<String,String> map = new TreeMap<String,String>(new Comparator<String>(){
- public int compare(String obj1,String obj2){
- //降序排序
- return obj2.compareTo(obj1);
}
});
map.put("month", "The month");- map.put("bread", "The bread");
- map.put("attack", "The attack");
- Set<String> keySet = map.keySet();
- Iterator<String> iter = keySet.iterator();
- while(iter.hasNext()){
- String key = iter.next();
- System.out.println(key+":"+map.get(key));
- }
如果要对TreeMap按照value的值进行排序,或者对HashMap,Hashtable,LinkedHashMap进行排序,则可以使用Map.Entry<K,V>接口结合List实现:
eg.1 对TreeMap按照value值升序:
- List<Map.Entry<String,String>> mappingList = null;
- Map<String,String> map = new TreeMap<String,String>();
- map.put("aaaa", "month");
- map.put("bbbb", "bread");
- map.put("ccccc", "attack");
- //通过ArrayList构造函数把map.entrySet()转换成list
- mappingList = new ArrayList<Map.Entry<String,String>>(map.entrySet());
- //通过比较器实现比较排序
- Collections.sort(mappingList, new Comparator<Map.Entry<String,String>>(){
- public int compare(Map.Entry<String,String> mapping1,Map.Entry<String,String> mapping2){
- return mapping1.getValue().compareTo(mapping2.getValue());
- }
- });
- for(Map.Entry<String,String> mapping:mappingList){
- System.out.println(mapping.getKey()+":"+mapping.getValue());
- }
eg.2 对HashMap(或Hashtable,LinkedHashMap)按照key的值升序:
- List<Map.Entry<String,String>> mappingList = null;
- Map<String,String> map = new HashMap<String,String>();
- map.put("month", "month");
- map.put("bread", "bread");
- map.put("attack", "attack");
- //通过ArrayList构造函数把map.entrySet()转换成list
- mappingList = new ArrayList<Map.Entry<String,String>>(map.entrySet());
- //通过比较器实现比较排序
- Collections.sort(mappingList, new Comparator<Map.Entry<String,String>>(){
- public int compare(Map.Entry<String,String> mapping1,Map.Entry<String,String> mapping2){
- return mapping1.getKey().compareTo(mapping2.getKey());
- }
- });
- for(Map.Entry<String,String> mapping:mappingList){
- System.out.println(mapping.getKey()+":"+mapping.getValue());
- }
Map排序的更多相关文章
- Java Map排序
Map排序的方式有很多种,这里记录下自己总结的两种比较常用的方式:按键排序(sort by key), 按值排序(sort by value). 1.按键排序 jdk内置的java.util包下的Tr ...
- C++ map排序(按照value值排序)_glp_hit_新浪博客
C++ map排序(按照value值排序)_glp_hit_新浪博客 C++ map排序(按照value值排序) (2012-07-12 14:19:51) 转载▼ 标签: ...
- STL容器——对map排序
STL容器(三)——对map排序 对于map的排序问题,主要分为两部分:根据key排序:根据value排序.下面我们就分别说一下~ 1. 根据key进行排序 map默认按照key进行升序排序 ,和输入 ...
- Java | Map排序,工具类改进
package util; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; ...
- Map排序——按key排序,按value排序
注:转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5959279.html 上一篇博文谈到了集合类的自定义排序方式,那么进一步扩展开来,与集合同等重要的Map有 ...
- Map排序(按key/按value)
package com.abc.test; import java.util.ArrayList; import java.util.Arrays; import java.util.Collecti ...
- Map 排序
/** * 通过map 的 value 排序,并返回排序后的第一个条目 * * @param m 待排序集合 * @param desc true:降序排序,false:升序排序 * @return ...
- stl之map 排序
排序问题,STL中默认是采用小于号来排序的,因为设置int等类型做key,它本身支持小于号运算,在一些特殊情况,比如关键字是一个结构体,涉及到排序就会出现问题,因为它没有小于号操作,insert等函数 ...
- java 对map排序
public static Map<String, String> sortMapByKey(Map<String, String> map) { if (map == nul ...
随机推荐
- svn检出的时候报 Unable to connect to a repository at URL错误(摘自CSDN)
背景:1. SVN服务器:VisualSVN-Server-2.5.5: 2. SVN客户端:TortoiseSVN-1.7.6.22632-x64-svn-1.7.4.msi: 在S ...
- QuartusII Design partion and logic lock
Design partion Design partion常用于“增益变量(QIC)”,通过Design Partition对子模块进行“逻辑分区”,在Design Partition Window中 ...
- Linux 基础命令
man 帮助命令 命令 --help 命令的简单帮助 help 命令的帮助(bash的内置命令) mkdir 创建目录 如makdir /data mkdir ...
- jsp 头像上传显示部分代码实现
<%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles"%> <% ...
- html页面读取PDF小案例
html页面 引用<script src="js/pdfobject.js" type="text/javascript" charset="u ...
- 简单的C语言文法
<程序>→<外部声明>|<程序><外部声明> <外部声明>→<函数定义>|<声明> <函数定义>→< ...
- 《转载》Spring MVC之@RequestParam @RequestBody @RequestHeader 等详解
引言: 接上一篇文章,对@RequestMapping进行地址映射讲解之后,该篇主要讲解request 数据到handler method 参数数据的绑定所用到的注解和什么情形下使用: 简介: han ...
- GLUT的简洁OO封装
毕业设计用到了OpenGL,由于不会用MFC和Win32API做窗口程序:自然选用了GLUT.GLUT很好用,就是每次写一堆Init,注册callback,觉得有点恶心,于是对他做了简单的OO封装.记 ...
- css3中变形函数(同样是对元素来说的)和元素通过改变自身属性达到动画效果
/*对元素进行改变(移动.变形.伸缩.扭曲)*/ .wrapper{ margin:100px 100px auto auto; width:300px; height:200px; border:2 ...
- [Sass]不同样式风格的输出方法
[Sass]不同样式风格的输出方法 众所周知,每个人编写的 CSS 样式风格都不一样,有的喜欢将所有样式代码都写在同一行,而有的喜欢将样式分行书写.在 Sass 中编译出来的样式风格也可以按不同的样式 ...