Java对map进行排序并生成序号
最近做的项目有这样一个需求:要求对map中的值进行排序并生成序号。如果值相等则序号不变;如果不相等序号为该数数值在所有元素中的索引。如下表所示:
| Key(String) | Value(Float) | Idx |
|---|---|---|
| 23 | 12.4 | 1 |
| 10 | 3.2 | 2 |
| 11 | 2.2 | 3 |
| 9 | 2.2 | 3 |
| 1 | 1.9 | 5 |
| 6 | 0.5 | 6 |
public static Integer getSort(Map<String, Float> hashMap, String string) {
// 转换
ArrayList<Entry<String, Float>> arrayList = new ArrayList<Map.Entry<String, Float>>(
hashMap.entrySet());
// 排序
Collections.sort(arrayList, new Comparator<Map.Entry<String, Float>>() {
public int compare(Map.Entry<String, Float> map1,
Map.Entry<String, Float> map2) {
return ((map2.getValue() - map1.getValue() == 0) ? 0 : (map2
.getValue()
- map1.getValue() > 0) ? 1 : -1);
}
});
Map<String, Integer> idxex = new HashMap<String, Integer>();
// 输出
int size = 1;
for (int i = 0; i < arrayList.size(); i++) {
Entry<String, Float> entry = arrayList.get(i);
if (i > 0) {
float curr = arrayList.get(i).getValue();
float last = arrayList.get(i - 1).getValue();
if (curr != last) {
size = i;
idxex.put(entry.getKey(), (i + 1));
size++;
} else {
idxex.put(entry.getKey(), size);
}
} else {
idxex.put(entry.getKey(), size);
}
}
for (Map.Entry<String, Integer> entry : idxex.entrySet()) {
String key = entry.getKey();
if (string.equals(key)) {
return entry.getValue();
}
}
return 0;
}
Java对map进行排序并生成序号的更多相关文章
- java -- 对Map按键排序、按值排序
java -- 对Map按键.按值排序 1.按键排序(sort by key) 直接上代码 ↓ public Map<String, Str ...
- Java中使用google.zxing快捷生成二维码(附工具类源码)
移动互联网时代,基于手机端的各种活动扫码和收付款码层出不穷:那我们如何在Java中生成自己想要的二维码呢?下面就来讲讲在Java开发中使用 google.zxing 生成二维码. 一般情况下,Java ...
- sql 根据查询的记录生成序号的几种方式
row_number() order() 函数会为查询出来的每一行记录生成一个序号,依次排序且不会重复,注意使用row_number函数时必须要用over子句选择对某一列进行排序才能生成序号. ra ...
- 【Java进阶】---map集合排序
map集合排序 这篇文章讲的不仅仅是map排序,比如把对象按某一属性排序,它都可以解决这些问题. 比如,有N个对象,每个对象有个属性就是成绩,成绩分:优秀,良好,合格.那我们如何按 ...
- Java提高(5)---map集合排序
map集合排序 这篇文章讲的不仅仅是map排序,比如把对象按某一属性排序,它都可以解决这些问题. 比如,有N个对象,每个对象有个属性就是成绩,成绩分:优秀,良好,合格.那我们如何按照成绩的好坏进行排序 ...
- css3 -- 自动生成序号(不使用JS,可任意排序)
需求:一个table 需要在第一列生成序号:1.2.3.4.5...... 并且自适应行数 不使用后台程序,开始考虑使用JS,但是一旦前台排序后,序号就乱了,最后采用CSS的一个计数器方法实现! & ...
- Java 8 – Map排序
前提 Map是Java中最常用的集合类之一,这里整理了关于HashMap的排序 (关于List的排序,请查看Collections.sort()的doc或源码). 将无序的HashMap借助Strea ...
- Java语言利用Collections.sort对Map,List排序
1.main方法包含TreeMap排序1,TreeMap排序2,HashMap排序,List<Integer>排序,List<Bean>排序,List<Map>排序 ...
- 类 java.util.Collections 提供了对Set、List、Map进行排序、填充、查找元素的辅助方法。
类 java.util.Collections 提供了对Set.List.Map进行排序.填充.查找元素的辅助方法. 1. void sort(List) //对List容器内的元素排序,排序的规 ...
随机推荐
- Python全栈day21(调用模块路径BASEDIR的正确方法)
正常写python程序会有一个可执行的bin.py文件,假如这个文件需要导入my_module里面定义的模块,应该怎么设置sys.path 文件夹目录结构如下,因为bin不在与my_module同级目 ...
- react-native 学习(二)
上一节讲到了 react-native的开发环境的配置,,这一节我门具体讲讲怎么看样式,怎么调试 看样式的话 有一个 神奇 react-native-developer tools(个人推荐,可选择性 ...
- Net Core MVC6 RC2 启动过程分析
入口程序 如果做过Web之外开发的人,应该记得这个是标准的Console或者Winform的入口.为什么会这样呢?.NET Web Development and Tools Blog ASP.NET ...
- 在HTML里面HEAD部分的META元素要表达的内容是什么
1.name属性主要有以下几种参数: A.Keywords(关键字) 说明:keywords用来告诉搜索引擎你网页的关键字是什么. 举例:<meta name ="keywords&q ...
- 前端开发 - JQuery - 上
一.js的缺点 <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...
- Linux NAPI处理流程分析
2017-05-10 今天重点对linux网络数据包的处理做下分析,但是并不关系到上层协议,仅仅到链路层. 之前转载过一篇文章,对NAPI做了比较详尽的分析,本文结合Linux内核源代码,对当前网络数 ...
- 【Django错误】OSError: raw write() returned invalid length 14 (should have been between 0 and 7)
错误环境 使用Django框架创建完models类的之后,用python manage.py migrate命令来生成数据库表的时候出错 错误代码 Operations to perform: App ...
- Python 开发中高级技巧
列表推导式 >>> chars = [ c for c in 'python' ] >>> chars ['p', 'y', 't', 'h', 'o', 'n'] ...
- Purpose of ContextLoaderListener in Spring
The ApplicationContext is where your Spring beans live. The purpose of the ContextLoaderListener is ...
- vim的快捷键
vim的快捷键 (〇)3中模式之间的切换 默认在命令模式. i键,从命令模式,进入插入模式. 冒号(:)键,从命令模式,进入末行模式. Esc键,从插入模式.末行模式,进入命令模式. (一)命令模式下 ...