Java--HashMap排序
package connection; import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry; public class Test { public static void main(String[] args) {
Map<String, String> userMap = new HashMap<String, String>();
userMap.put("cn-1410165inv", "E141@0165#inv");
userMap.put("cn-3330147inv", "E333@0147#inv");
userMap.put("cn-1410165invkio", "J02amN$8");
userMap.put("cn-1410165invrob", "U1SzpU+m");
userMap.put("cn-3330147invkio", "J6]bJK,c");
userMap.put("cn-3330147invrob", "W0zr%Y,q"); for(Map.Entry<String, String> s : userMap.entrySet()) {
System.out.println(s.getKey() + " " + s.getValue());
} List<Map.Entry<String, String>> sortList = new LinkedList<Map.Entry<String,String>>(userMap.entrySet());
Collections.sort(sortList, new Comparator<Map.Entry<String, String>>() { @Override
public int compare(Entry<String, String> o1, Entry<String, String> o2) {
String suffix1 = o1.getKey().split("-\\d+")[1];
String suffix2 = o2.getKey().split("-\\d+")[1];
int len1 = suffix1.length();
int len2 = suffix2.length();
if(len1 != len2) {
return len1-len2;
}
int min = len1>=len2?len2:len1;
for(int i=0; i<min; i++) {
String c1 = suffix1.substring(i, i+1);
String c2 = suffix2.substring(i, i+1);
if(c1.toCharArray()[0] - c2.toCharArray()[0] == 0) {
continue;
} else {
return c1.toCharArray()[0] - c2.toCharArray()[0];
}
}
//continue
len1 = o1.getKey().length();
len2 = o2.getKey().length();
if(len1 != len2) {
return len1-len2;
}
min = len1>=len2?len2:len1;
for(int i=0; i<min; i++) {
String c1 = o1.getKey().substring(i, i+1);
String c2 = o2.getKey().substring(i, i+1);
if(c1.toCharArray()[0] - c2.toCharArray()[0] == 0) {
continue;
} else {
return c1.toCharArray()[0] - c2.toCharArray()[0];
}
}
return 0;
}
}); System.out.println("--------------------------------------");
Map<String, String> sortMap = new LinkedHashMap<String, String>();
for(Entry<String, String> entry: sortList) {
sortMap.put(entry.getKey(), entry.getValue());
}
for(Map.Entry<String, String> s : sortMap.entrySet()) {
System.out.println(s.getKey() + " " + s.getValue());
} } }
颜色区域是关键代码。
Java--HashMap排序的更多相关文章
- [翻译]Java HashMap工作原理
大部分Java开发者都在使用Map,特别是HashMap.HashMap是一种简单但强大的方式去存储和获取数据.但有多少开发者知道HashMap内部如何工作呢?几天前,我阅读了java.util.Ha ...
- Java常用排序算法+程序员必须掌握的8大排序算法+二分法查找法
Java 常用排序算法/程序员必须掌握的 8大排序算法 本文由网络资料整理转载而来,如有问题,欢迎指正! 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排 ...
- Java学习笔记(二二)——Java HashMap
[前面的话] 早上起来好瞌睡哈,最近要注意一样作息状态. HashMap好好学习一下. [定义] Hashmap:是一个散列表,它存储的内容是键值对(key——value)映射.允许nul ...
- Java 常用排序算法/程序员必须掌握的 8大排序算法
Java 常用排序算法/程序员必须掌握的 8大排序算法 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分配 ...
- java集合框架之java HashMap代码解析
java集合框架之java HashMap代码解析 文章Java集合框架综述后,具体集合类的代码,首先以既熟悉又陌生的HashMap开始. 源自http://www.codeceo.com/arti ...
- HashMap的原理与实 无锁队列的实现Java HashMap的死循环 red black tree
http://www.cnblogs.com/fornever/archive/2011/12/02/2270692.html https://zh.wikipedia.org/wiki/%E7%BA ...
- 【转】Java HashMap工作原理(好文章)
大部分Java开发者都在使用Map,特别是HashMap.HashMap是一种简单但强大的方式去存储和获取数据.但有多少开发者知道HashMap内部如何工作呢?几天前,我阅读了java.util.Ha ...
- 【转】Java HashMap 源码解析(好文章)
.fluid-width-video-wrapper { width: 100%; position: relative; padding: 0; } .fluid-width-video-wra ...
- 转:Java HashMap实现详解
Java HashMap实现详解 转:http://beyond99.blog.51cto.com/1469451/429789 1. HashMap概述: HashMap是基于哈希表的M ...
- java 集合排序(转)
Java API针对集合类型排序提供了两种支持:java.util.Collections.sort(java.util.List)java.util.Collections.sort(java.ut ...
随机推荐
- 如何从Domino迁移到Exchange 2010
从Domino 6.x迁移到Exchange 2010利用了微软提供的工具:Microsoft Transporter Suite,该工具不支持从Domino 6.X直接迁移至Exchange 2 ...
- 文件上传报错java.io.FileNotFoundException拒绝访问
局部代码如下: File tempFile = new File("G:/tempfileDir"+"/"+fileName); if(!tempFile.ex ...
- Vulkan SDK 之 Graphics Pipeline
A graphics pipeline consists of shader stages, a pipeline layout, a render pass, and fixed-function ...
- 【BZOJ4237】稻草人
题意 给定平面上 \(N\) 个关键点,询问有多少个矩形满足左下和右上各有一个关键点,且矩形中间没有关键点. \(N\le 2\cdot 10^5\) . 题解 我们按 \(x\) 排序分治,对于左右 ...
- Essay写作没逻辑不要慌,掌握这几点即可
今天文章的内容,真的是很多很多留学生的最大的问题,没有之一:逻辑.是的,你没有看错,也不用惊讶.大家的essay写作得分不高,很多时候不是因为语言问题.排除很多细节表达的不足,更让教授头疼的居然是:内 ...
- ntpdate更新系统时间时报错Can't find host ntp1.aliyun.com: Servname not supported for ai_socktype (-8)
ntpdate更新系统时间时报错Can't find host ntp1.aliyun.com: Servname not supported for ai_socktype (-8) 所报错误: [ ...
- vue作用域插槽实践
引言 我在练手的时候发现后端返回的数据可以通过两种方式渲染 (自己遇到的 可能你都会 哈哈哈) 后端传过来的数据函数 from django.http import JsonResponse def ...
- css 径向渐变
.example { width: 150px; height: 80px; background: -webkit-radial-gradient(red, green, blue); /* Saf ...
- UVA - 11181 Probability|Given (条件概率)
题意:有n个人,已知每个人买东西的概率,求在已知r个人买了东西的条件下每个人买东西的概率. 分析:二进制枚举个数为r的子集,按定义求即可. #include<cstdio> #includ ...
- ZOJ - 3870 Team Formation(异或)
题意:给定N个数,求这N个数中满足A ⊕ B > max{A, B})的AB有多少对.(A,B是N中的某两个数) 分析: 1.异或,首先想到转化为二进制. eg:110011(A)和 1(B)- ...