Map排序

来源:互联网 发布:八维研修学院java课程 编辑:程序博客网 时间:2024/06/08 12:22
package lzh;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.TreeMap;/** * Map排序 * @author lzh * */public class TestMapSort {public static void main(String[] args) {Map<String, String> map = new HashMap<String, String>();map.put("a", "c");map.put("b", "b");map.put("c", "a");map.put("1", "abc");//MapSort1(map);//MapSort2(map);MapSort3();}private static void MapSort3() {Map<String, String> map = new TreeMap<String, String>(new Comparator<String>() {    public int compare(String obj1, String obj2) {        return obj2.compareTo(obj1);// 降序排序    }});map.put("a", "c");map.put("b", "b");map.put("c", "a"); for (String key : map.keySet()) {    System.out.println(key + " :" + map.get(key));}}/** * 按value排序(通用) * @param map */private static void MapSort2(Map<String, String> map) {// 通过ArrayList构造函数把map.entrySet()转换成list        List<Map.Entry<String, String>> list = new ArrayList<Map.Entry<String, String>>(map.entrySet());        // 通过比较器实现比较排序        Collections.sort(list, new Comparator<Map.Entry<String, String>>() {            public int compare(Map.Entry<String, String> mapping1, Map.Entry<String, String> mapping2) {                return mapping1.getValue().compareTo(mapping2.getValue());            }        });         for (String key : map.keySet()) {            System.out.println(key + " :" + map.get(key));        }}private static void MapSort1(Map<String, String> map) {//因为Map这个类没有继承Iterable接口所以不能直接通过map.iterator来遍历(list,set就是实现了这个接口,所以可以直接这样遍历),//所以就只能先转化为set类型,用entrySet()方法,其中set中的每一个元素值就是map中的一个键值对,也就是Map.Entry<K,V>了,然后就可以遍历了。//基本上 就是遍历map的时候才用得着它吧。// 通过ArrayList构造函数把map.entrySet()转换成listList<Map.Entry<String, String>> list = new ArrayList<Map.Entry<String,String>>(map.entrySet());// 通过比较器实现比较排序Collections.sort(list, new Comparator<Map.Entry<String, String>>() {public int compare(Map.Entry<String, String> mapping1, Map.Entry<String, String> mapping2){ return mapping1.getKey().compareTo(mapping2.getKey());}});for (Map.Entry<String, String> mapping : list) {    System.out.println(mapping.getKey() + " :" + mapping.getValue());}} }

0 0
原创粉丝点击