Map 排序

  /**
     * 通过map 的 value 排序,并返回排序后的第一个条目
     *
     * @param m 待排序集合
     * @param desc true:降序排序,false:升序排序
     * @return 返回排序后的第一个条目
     * */
    public Entry<String, Integer> getFristEntryOfSortedMap(Map<String, Integer> m , boolean desc) {
        Entry<String, Integer> entry = null;
        if (m != null && !m.isEmpty()) {
            List<Entry<String, Integer>> entryList = new ArrayList<Entry<String, Integer>>(m.entrySet());
            if(desc){
                Collections.sort(entryList, new Comparator<Entry<String, Integer>>() {
                    public int compare(Entry<String, Integer> e1, Entry<String, Integer> e2) {
                        int v1 = 0, v2 = 0;
                        v1 = e1.getValue() == null ? 0 : e1.getValue();
                        v2 = e2.getValue() == null ? 0 : e2.getValue();
                        return v2 - v1;
                    }
                });
            }else{
                Collections.sort(entryList, new Comparator<Entry<String, Integer>>() {
                    public int compare(Entry<String, Integer> e1, Entry<String, Integer> e2) {
                        int v1 = 0, v2 = 0;
                        v1 = e1.getValue() == null ? 0 : e1.getValue();
                        v2 = e2.getValue() == null ? 0 : e2.getValue();
                        return v1 - v2;
                    }
                });
            }

            Iterator<Entry<String, Integer>> it = entryList.iterator();
            if (it.hasNext()) {
                entry = it.next();
            }
        }
        return entry;
    }
时间: 2024-10-05 07:29:34

Map 排序的相关文章

java Map排序(升序、降序、随机排序)

基础知识: 1 HashMap会使用key,根据hashcode进行默认排序. 2  LinkedHashMap根据存入先后进行排序 代码展示: 1 随机排序 java Map排序(升序.降序.随机排序),布布扣,bubuko.com

STL容器——对map排序

STL容器(三)——对map排序 对于map的排序问题,主要分为两部分:根据key排序:根据value排序.下面我们就分别说一下~ 1. 根据key进行排序 map默认按照key进行升序排序 ,和输入的顺序无关.如果是int/double等数值型为key,那么就按照大小排列:如果是string类型,那么就按照字符串的字典序进行排列~ (还记得之前说过的字典序吗?当时我们用到了next_permutation这个库函数!)下面我们展示一个例子,说明map中默认按照key升序排列 的情况. Exam

STL容器(三)——对map排序

STL容器(三)--对map排序 对于map的排序问题,主要分为两部分:根据key排序:根据value排序.下面我们就分别说一下~ 1. 根据key进行排序 map默认按照key进行升序排序,和输入的顺序无关.如果是int/double等数值型为key,那么就按照大小排列:如果是string类型,那么就按照字符串的字典序进行排列~(还记得之前说过的字典序吗?当时我们用到了next_permutation这个库函数!)下面我们展示一个例子,说明map中默认按照key升序排列的情况. Example

c++之map排序

c++之map排序 为了实现查找,map在插值时已经对key值进行了排序(使用红黑树结构).如果想对map的value值进行排序,由于sort函数只可以对有序容器进行排序,那么可以将map转为vector后进行排序. #include <iostream> #include <map> #include <algorithm> // 对map不能直接排序, 使用vector进行排序 bool compVec(const std::pair<int, float&g

Map排序

HashMap: 最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度.HashMap最多只允许一条记录的键为Null(多条会覆盖);允许多条记录的值为 Null.非同步的. TreeMap: 能够把它保存的记录根据键(key)排序,默认是按升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的.TreeMap不允许key的值为null.非同步的. TreeMap默认按key进行升序排序,如果想改变默认的

stl之map 排序

排序问题,STL中默认是采用小于号来排序的,因为设置int等类型做key,它本身支持小于号运算,在一些特殊情况,比如关键字是一个结构体,涉及到排序就会出现问题,因为它没有小于号操作,insert等函数在编译的时候过不去,下面给出两个方法解决这个问题: 第一种:小于号重载,程序举例 1 #include <map> 2 #include <string> 3 using namespace std; 4 typedef struct tagStudentInfo 5 { 6 int

Java对Map排序

Java中对Map(HashMap,TreeMap,Hashtable等)的排序时间 首先简单说一下他们之间的区别: HashMap: 最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度.HashMap最多只允许一条记录的键为Null(多条会覆盖);允许多条记录的值为 Null.非 首先简单说一下他们之间的区别:HashMap: 最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度.HashMap最

51nod 1095 Anigram单词【hash/map/排序/字典树】

1095 Anigram单词 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题  收藏  关注 一个单词a如果通过交换单词中字母的顺序可以得到另外的单词b,那么定义b是a的Anigram,例如单词army和mary互为Anigram.现在给定一个字典,输入Q个单词,从给出的字典中找出这些单词的Anigram. Input 第1行:1个数N,表示字典中单词的数量.(1 <= N <= 10000) 第2 - N + 1行,字典中的单词,单词长度 <= 10

Map排序(按key排序,按value排序)

主要分两种,按键排序.按值排序. 而且,按key排序主要用于TreeMap,而按value排序则对于Map的子类们都适用. 一.按键排序 按Key排序主要用于TreeMap,可以实现按照Key值的大小,在对象插入时直接插入到合适的位置,保持Map的顺序性. 来看TreeMap的构造函数:TreeMap(Comparator<? super K> comparator):构造一个新的.空的树映射,该映射根据给定比较器进行排序. 这里的比较器是key的比较器.所以定义比较器时用于比较的两个参数是K