map对值排序
来源:互联网 发布:const java 编辑:程序博客网 时间:2024/06/01 09:52
/**
*
*/
package com.fritt.planmanage.util;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
import edu.emory.mathcs.backport.java.util.Collections;
/**
* @author lf
*
*/
public class SortMap {
public static Map<String, Integer> sortMap(Map<String, Integer> oldMap) {
ArrayList<Map.Entry<String, Integer>> list =
new ArrayList<Map.Entry<String, Integer>>(oldMap.entrySet());
Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
@Override
public int compare(Entry<java.lang.String, Integer> arg0,
Entry<java.lang.String, Integer> arg1) {
return arg1.getValue() - arg0.getValue(); //对map值进行降序排序
}
});
Map<String, Integer> newMap = new LinkedHashMap<String, Integer>();
for (int i = 0; i < list.size(); i++) {
newMap.put(list.get(i).getKey(), list.get(i).getValue());
}
return newMap;
}
public static Map<String, Double> sortMap_Double(Map<String, Double> oldMap) {
ArrayList<Map.Entry<String, Double>> list =
new ArrayList<Map.Entry<String, Double>>(oldMap.entrySet());
Collections.sort(list, new Comparator<Map.Entry<String, Double>>() {
@Override
public int compare(Entry<java.lang.String, Double> arg0,
Entry<java.lang.String, Double> arg1) {
return arg1.getValue().compareTo(arg0.getValue());
}
});
Map<String, Double> newMap = new LinkedHashMap<String, Double>();
for (int i = 0; i <list.size(); i++) {
newMap.put(list.get(i).getKey(), list.get(i).getValue());
}
return newMap;
}
public static Map<String, String> sortMap_String(Map<String, String> oldMap) {
ArrayList<Map.Entry<String, String>> list =
new ArrayList<Map.Entry<String, String>>(oldMap.entrySet());
Collections.sort(list, new Comparator<Map.Entry<String, String>>() {
@Override
public int compare(Entry<String, String> arg0,Entry<String,String> arg1) {
return arg0.getValue().compareTo(arg1.getValue()); //升序排序
}
});
Map<String, String> newMap = new LinkedHashMap<String, String>();
for (int i = list.size()-1; i >=0; i--) { //从后向前导入,相当于降序
newMap.put(list.get(i).getKey(), list.get(i).getValue());
}
return newMap;
}
*
*/
package com.fritt.planmanage.util;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
import edu.emory.mathcs.backport.java.util.Collections;
/**
* @author lf
*
*/
public class SortMap {
public static Map<String, Integer> sortMap(Map<String, Integer> oldMap) {
ArrayList<Map.Entry<String, Integer>> list =
new ArrayList<Map.Entry<String, Integer>>(oldMap.entrySet());
Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
@Override
public int compare(Entry<java.lang.String, Integer> arg0,
Entry<java.lang.String, Integer> arg1) {
return arg1.getValue() - arg0.getValue(); //对map值进行降序排序
}
});
Map<String, Integer> newMap = new LinkedHashMap<String, Integer>();
for (int i = 0; i < list.size(); i++) {
newMap.put(list.get(i).getKey(), list.get(i).getValue());
}
return newMap;
}
public static Map<String, Double> sortMap_Double(Map<String, Double> oldMap) {
ArrayList<Map.Entry<String, Double>> list =
new ArrayList<Map.Entry<String, Double>>(oldMap.entrySet());
Collections.sort(list, new Comparator<Map.Entry<String, Double>>() {
@Override
public int compare(Entry<java.lang.String, Double> arg0,
Entry<java.lang.String, Double> arg1) {
return arg1.getValue().compareTo(arg0.getValue());
}
});
Map<String, Double> newMap = new LinkedHashMap<String, Double>();
for (int i = 0; i <list.size(); i++) {
newMap.put(list.get(i).getKey(), list.get(i).getValue());
}
return newMap;
}
public static Map<String, String> sortMap_String(Map<String, String> oldMap) {
ArrayList<Map.Entry<String, String>> list =
new ArrayList<Map.Entry<String, String>>(oldMap.entrySet());
Collections.sort(list, new Comparator<Map.Entry<String, String>>() {
@Override
public int compare(Entry<String, String> arg0,Entry<String,String> arg1) {
return arg0.getValue().compareTo(arg1.getValue()); //升序排序
}
});
Map<String, String> newMap = new LinkedHashMap<String, String>();
for (int i = list.size()-1; i >=0; i--) { //从后向前导入,相当于降序
newMap.put(list.get(i).getKey(), list.get(i).getValue());
}
return newMap;
}
}
HashMap:输入的<key,value>对是乱序插入,比较快,key不允许重复
TreeMap:有序,对输入的<key,value>进行排序,默认将按照key值进行升序排序,key不允许重复,若重复,后面的覆盖前面的
LinkedHashMap:它保留插入的顺序,如果需要输出的顺序和输入时的相同,那么就选用LinkedHashMap。
IdentityHashMap:key允许重复,只要两个key的地址不相等即可。
- public class Test {
- public static void main(String[] args) {
- //不指定排序器
- TreeMap<String, String> treeMap1 = new TreeMap<String, String>();
- treeMap1.put("2", "1");
- treeMap1.put("b", "1");
- treeMap1.put("1", "1");
- treeMap1.put("a", "1");
- System.out.println("treeMap1="+treeMap1);
- //指定排序器
- TreeMap<String, String> treeMap2 = new TreeMap<String, String>(new Comparator<String>(){
- /*
- * int compare(Object o1, Object o2) 返回一个基本类型的整型,
- * 返回负数表示:o1 小于o2,
- * 返回0 表示:o1和o2相等,
- * 返回正数表示:o1大于o2。
- */
- public int compare(String o1, String o2) {
- //指定排序器按照降序排列
- return o2.compareTo(o1);
- }
- });
- treeMap2.put("2", "1");
- treeMap2.put("b", "1");
- treeMap2.put("1", "1");
- treeMap2.put("a", "1");
- System.out.println("treeMap2="+treeMap2);
- }
- }
执行输出结果:
- treeMap1={1=1, 2=1, a=1, b=1}
- treeMap2={b=1, a=1, 2=1, 1=1}
阅读全文
0 0
- map对值排序
- 根据value值对map进行排序
- 对map的value值排序
- 对map排序
- Comparator对Map排序!
- java 对 Map 排序
- Java对Map排序
- Java 对Map排序
- map对key排序
- Java对Map排序
- Java对Map排序
- Java对Map排序
- 对Map排序
- 对Map进行排序
- Java对Map排序
- Java对Map排序
- 对Map排序
- Java对Map排序
- C/C++毫秒时间戳函数
- 能不做自己写个类,也叫java.lang.String
- 冒泡法【持续更新】
- Leetcode unique-paths
- ORACLE查询优化及gather_plan_statistics hint
- map对值排序
- 详解Web.XML文件
- ajax+jsp一些心得
- 每日工作记录——W5500网口ping中出现的问题
- LearnOpenGL #00 环境搭建 Xcode/GLEW/GLFW/GLAD
- UWA 新功能| 多线程模式下也能定位堆内存问题了!
- 惠安惠达新需求:增加起始里程和结束里程修改
- 偏向锁,轻量级锁与重量级锁的区别与膨胀
- CSS学习笔记(Day3)