java map key 升序_Java Map 按 key 升序排序
最近开发微信和支付宝的服务端支付,涉及到字典的排序和 url 参数转换成字典的操作,整理了一个工具类:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;
public class MapUtil {
/**
* Map 按 key 进行排序
*
* @param map
* @return
*/
public static Map < String,
String > sortMapByKey(Map < String, String > map) {
if (map == null || map.isEmpty()) {
return null;
}
Map < String,
String > sortMap = new TreeMap < String,
String > (new MapKeyComparator());
sortMap.putAll(map);
return sortMap;
}
/**
* Map 按 value 进行排序
*
* @param map
* @return
*/
public static Map < String,
String > sortMapByValue(Map < String, String > oriMap) {
if (oriMap == null || oriMap.isEmpty()) {
return null;
}
Map < String,
String > sortedMap = new LinkedHashMap < String,
String > ();
List < Map.Entry < String,
String >> entryList = new ArrayList < Map.Entry < String,
String >> (oriMap.entrySet());
Collections.sort(entryList, new MapValueComparator());
Iterator < Map.Entry < String,
String >> iter = entryList.iterator();
Map.Entry < String,
String > tmpEntry = null;
while (iter.hasNext()) {
tmpEntry = iter.next();
sortedMap.put(tmpEntry.getKey(), tmpEntry.getValue());
}
return sortedMap;
}
/**
* 将 Url Params String 转为 Map
*
* @param param
* aa=11&bb=22&cc=33
* @return map
*/
public static Map < String,
Object > urlParams2Map(String param) {
Map < String,
Object > map = new HashMap < String,
Object > ();
if ("".equals(param) || null == param) {
return map;
}
String[] params = param.split("&");
for (int i = 0; i < params.length; i++) {
String[] p = params[i].split("=");
if (p.length == 2) {
map.put(p[0], p[1]);
}
}
return map;
}
/**
* 将 map 转为 Url Params String
*
* @param map
* @return aa=11&bb=22&cc=33
*/
public static String map2UrlParams(Map < String, String > map, boolean isSort) {
if (map == null) {
return "";
}
StringBuffer sb = new StringBuffer();
List < String > keys = new ArrayList < String > (map.keySet());
if (isSort) {
Collections.sort(keys);
}
for (int i = 0; i < keys.size(); i++) {
String key = keys.get(i);
String value = map.get(key).toString();
sb.append(key + "=" + value);
sb.append("&");
}
String s = sb.toString();
if (s.endsWith("&")) {
s = s.substring(0, s.lastIndexOf("&"));
}
return s;
}
}
class MapKeyComparator implements Comparator < String > {
@Override
public int compare(String str1, String str2) {
return str1.compareTo(str2);
}
}
class MapValueComparator implements Comparator < Map.Entry < String, String >> {
@Override
public int compare(Entry < String, String > me1, Entry < String, String > me2) {
return me1.getValue().compareTo(me2.getValue());
}
}
另外按 map 的 key ascii 码升序排列,还有一个更简单的办法,如下面的语句:
SortedMap smap = new TreeMap(map);
注意 map 是现成无序的字典,依赖 SortedMap和 TreeMap 转换就可以搞定了,很简单。
java map key 升序_Java Map 按 key 升序排序相关推荐
- java map null吗_Java: Map里面的键和值可以为空吗?
在Java中,Map里面的键和值可以为空吗?我们先来看一个例子: private static void TestHashMap() { // TODO Auto-generated method s ...
- java map遍历删除_Java Map在遍历过程中删除元素
map遍历判断筛选删除时 如果对map使用put.remove或clear方法(例如map.remove直接删除),那么迭代器就不再合法(并且在其后使用该迭代器将会有ConcurrentModific ...
- java两map取交集_Java Map 求交集 并集 差集
import com.google.common.collect.MapDifference; import com.google.common.collect.Maps; import java.u ...
- java从map取值_java map中怎么通过键取出值?
展开全部 在java map中取出键值有以32313133353236313431303231363533e59b9ee7ad9431333363396464下两种方法: 1.第一种方法根据键值的名字 ...
- java map的应用_JAVA map的简单应用
第一次写内容,比较简单希望大家见谅. 相信很多新码农都会使用if判断,通过验证if 进而继续编写业务流程,但是有的时候if也并不是很好用.比如,判定条件有许多的时候.下面举个例子. 联调webserv ...
- java web 树形管理_java web 后台树形菜单排序
1.需求场景 数据库后台返回树形结构菜单,实现菜单排序. 2.项目环境 spring spring mvc mybatis mysql 3.实现方法 对应的实体类 private int id;// ...
- Java语言之数组_java语言之数组-----选择排序
1. 数组的基本知识:数组是用来存储变量的集合 2. 数组的声明格式:元素类型 [] 数组引用变量名 = new 元素类型[元素个数] 如: int [] arrary = new int [10] ...
- Java将map置空_Java实现过滤掉map集合中key或value为空的值示例
Java实现过滤掉map集合中key或value为空的值示例 发布时间:2020-09-16 23:26:14 来源:脚本之家 阅读:147 作者:May的博客 本文实例讲述了Java实现过滤掉map ...
- java map 允许重复_java中key值可以重复的map:IdentityHashMap
在Java中,有一种key值可以重复的map,就是IdentityHashMap.在IdentityHashMap中,判断两个键值k1和 k2相等的条件是 k1 == k2 .在正常的Map 实现(如 ...
最新文章
- 【深度学习】(7) 交叉验证、正则化,自定义网络案例:图片分类,附python完整代码
- Hadoop集群搭建(一:集群安装及网络环境配置)
- windows 7作为微软对抗Google的秘密武器
- 请列举你了解的分布式锁_面试官想要你回答的分布式锁实现原理
- Google Protocol Buffer 简单介绍
- boost::assertion_failed_msg相关的测试程序
- js操作完的数值赋回html元素,JS的学习
- VS 2005 或 VS 2008 在安装VSS 2005后,看不到源代码管理的解决办法
- 凯恩帝k1000ti参数设置_KND1000TI系统参数
- c++ 按行读取txt文件并赋值_python操作txt文件中数据教程[3]python读取文件夹中所有txt文件并将数据转为csv文件...
- 极限运动:街头极限单车,不只是牛逼!
- 电脑如何进行长截图?
- 让你从入门到精通CASS软件教程免费下载
- 【吐血整理】数据库的安全性
- python图片截取斜四边形_opencv 截取任意四边形区域的图像
- 至少144只独角兽在等着IPO,数据不好,PE 给的估值可能保不住了
- c++刷题(3/100)数独,栈和队列
- 黄哥python培训怎样
- RNA 12. SCI 文章中肿瘤免疫浸润计算方法之 CIBERSORT
- Java实现常见排序算法