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 ...
随机推荐
- QT进行多传感器(执行器)的编程框架
物联网的发展使得现今使用越来越广泛,对于多传感器进行管理变得十分有必要.使用传统的过程管理,很明显很容易陷入管理的混乱, 造成信息的不同步.使用面向对象的管理,以及对物理传感器在程序中进行抽象,并且建 ...
- 集成模拟温度传感器低成本2.4G CC2500RGPR 中文手册
CC2500是一种低成本真正单片的2.4GHz收发器,为低功耗无线应用而设计.电路定位2400-2483.5MHz的ISM(工业,科学和医学)和SRD(短距离设备)频率波段. RF收发器集成了一个数据 ...
- Docker安装,基本概念,执行流程,生命周期简介
Docker基本概念 在使用Docker前,首先要先知道Docker中这几个常用的概念: 镜像:镜像是文件,只读的,提供了运行完整软硬件应用程序的集装箱. 容器:是镜像的实例,由Docker负责创建, ...
- Fedora 19安装以后的优化
Fedora 19安装以后的优化 转载自 http://www.zhukun.net/archives/6614 最近安装了Fedora 19 32bit,以下是一些优化配置,使之更适合国人使用. 1 ...
- nodejs 文件路径问题
fs.stat() 是 获取 本目录下 文件信息 的方法 .如果使用要加上绝对路径.不然会出问题.例: 解决方法
- cf 782# A.Andryusha and Socks B.The Meeting Place Cannot Be Changed C.Andryusha and Colored Balloons
看来快掉到灰名的蒟蒻涨rating也快... A题模拟一下就好(一开始还sb,, #include<bits/stdc++.h> #define LL long long using na ...
- 13.swoole学习笔记--DNS查询
<?php //执行DNS查询 swoole_async_dns_lookup("www.baidu.com",function($host,$ip){ echo $ip; ...
- vs使用opencv总提示igdrclneo64.dll异常.exe: 0xC0000005:的解决方法
最近项目中要使用opencv库,搭建好环境,使用接口的时候,总提示 igdrclneo64.dll报错崩溃,一直怀疑是自己程序的问题,后面经过一系列的查资料才解决 解决办法: 本地环境:vs2015+ ...
- 【LeetCode】跳跃游戏II
[问题]给定一个非负整数数组,你最初位于数组的第一个位置.数组中的每个元素代表你在该位置可以跳跃的最大长度.你的目标是使用最少的跳跃次数到达数组的最后一个位置. 示例: 输入: [,,,,] 输出: ...
- “设计型web前端与开发型web前端”有哪些区别?
学web前端,你弄懂开发型web前端和设计型web前端的区别了吗?今天给大家梳理一下设计型web前端做什么?都要学习什么? 想必大家也会遇到这种情况,要做一个项目,产品经理说产品原型图已经画好了,让我 ...