map集合排序
来源:互联网 发布:广电网络运维体系建设 编辑:程序博客网 时间:2024/06/07 16:59
写东西时遇到一个问题,要将HashMap按照value的值来进行排序。
百度了一下,膜拜了一下大佬的博客 map集合排序
但是感觉有些繁琐,因为比较菜,对Comparator比较器不熟悉,就自己想了一种易于理解办法。
场景是这样的,一个Map中,泛型为<String,Double>,现在要按照value从大到小对这个集合排序,而且value值可能有相同的,所以
没办法将它反着放进另外一个Map中,因为Map中key不能相同。
思路是:
建立一个二维数组,行数为2,列数为value的个数,即map.size()。遍历集合,将每一个value依次放入第一行,将每一个key依次放入第二行与之对应。这样就形成了一种对应关系,然后对第一行中的value进行排序,当要移动value时,把与之对应的key也跟着移动即可。
代码:
@org.junit.Testpublic void test() throws IOException{Map<String,Double> map=new LinkedHashMap<String,Double>();map.put("101", 1.1);map.put("103", 0.1);map.put("104", 2.1);map.put("105", 4.1);map.put("102", 3.1);Double sort[][]=new Double[2][map.size()];int n=0;for(Entry<String,Double> e:map.entrySet()){//将value、key依次对应存入数组sort[0][n]=e.getValue();sort[1][n++]=Double.valueOf(e.getKey());}for(int i=0;i<map.size()-1;i++){//这里采用冒泡排序 复杂度取决于你用的排序方法for(int j=i+1;j<map.size();j++){if(sort[0][i]<sort[0][j]){double t;//交换valuet=sort[0][i];sort[0][i]=sort[0][j];sort[0][j]=t;//交换keyt=sort[1][i];sort[1][i]=sort[1][j];sort[1][j]=t;}}}//也可以将结果再存入集合们这里直接输出System.out.println("排序后:");for(int i=0;i<2;i++){for(int j=0;j<map.size();j++){if(i!=1){System.out.print(sort[i][j]+"\t");}else{System.out.print(String.valueOf(sort[i][j])+"\t");}}System.out.println();}}
结果:
阅读全文
1 0
- map集合的排序
- MAP集合排序
- Map集合排序
- Map集合排序
- map集合排序
- Map集合排序
- 对map集合进行排序
- 对map集合进行排序
- 对map集合进行排序
- 对map集合进行排序
- 对map集合进行排序
- map集合针对key排序
- 给map集合字母排序
- Map集合根据key排序
- 对map集合进行排序
- 对map集合进行排序
- 对map集合进行排序
- List集合、Map集合、数组的排序
- PHP和Redis实现在高并发下的抢购及秒杀功能示例详解
- 调用阿里云短信服务
- Jquery Validate 相关参数及常用的自定义验证规则
- 数据结构——链表(头结点循环链表)
- 欢迎使用CSDN-markdown编辑器
- map集合排序
- X Chen笔记---Centos网卡桥接 方法一(按部就班)
- DevPts持续交付系统开启试用阶段
- open函数O_CLOEXEC作用
- Lua和C++交互详细总结
- 桥数据包处理函数——br_handle_frame_finish(七)
- BZOJ1453 WCDface 双面棋盘
- Spring Boot与Docker部署
- lombok安装与使用