文档章节

对Map按value进行排序

来来叔叔
 来来叔叔
发布于 2017/08/04 23:57
字数 248
阅读 3
收藏 0
 

Map内部是按key进行排序的,而不是value

如果希望根据valueMap里面的元素对排序,可以通过把Map里面的元素拷贝到一个list中,然后定义自己的比较函数,并对该list进行排序。

1)首先,需要定义一个结构体,以用于封装Map中的元素对(key, value)

struct strTest

{

    char key[32]; //key示例

    unsigned int value; //value示例

};

typedef std::list<stFunc> tpTestList;

tpTestList testList;

typedef std::map<char*, unsigned int> tpTestMap;

tpTestMap testMap;

(2)定义一个对结构体进行比较的函数

static bool xx_greater(strTest f1, strTest f2)

{

    return f1.value<f2.value;

}

(3)遍历map,将其元素拷贝到list中;使用上面定义的比较函数,直接调用list的sort方法,即可实现排序

/* copy map to a list, to enable sort by value

Example:

{{"key1",10},{"key2",2},{"key3",5}}

=>{{"key2",2},{" key3",5},{"key1",10}}

*/

static void xx_sort()

{

    testList.clear();

    tpTestMap::iterator pos;

    for (pos=testMap.begin(); pos!=testMap.end(); ++pos)

    {

       strTest test;

       strcpy(test.key, pos->first);

       test.value = pos->second;

       testList.push_back(test);

    }

    testList.sort(xx_greater);

}


© 著作权归作者所有

来来叔叔
粉丝 0
博文 100
码字总数 55732
作品 0
广州
高级程序员
私信 提问
Java Map 按key排序和按Value排序

Java Map 按key排序和按Value排序 一.理论准备 Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。 TreeMap:基于红黑树(Red-Black tree)的 Na...

writeademo
2016/10/12
35
0
面试二 : map 排序

面试官出的题: 给你一组学生的成绩信息,key 为学生姓名,value 为成绩,然后根据value 进行排序。 说实话,面试官问到我的时候,真的挺崩溃的,自己的算法本来就不好,对这个又不是很熟悉,...

botaorain
2014/09/24
0
0
Java Map按键(Key)排序和按值(Value)排序

Map排序的方式有很多种,两种比较常用的方式:按键排序(sort by key), 按值排序(sort by value)。 1、按键排序 jdk内置的java.util包下的TreeMap<K,V>既可满足此类需求,向其构造方法 Tree...

丁佳辉
2016/05/06
249
0
Hadoop深入学习:MapTask详解

我们主要来学习MapTask的内部实现。 整体执行流程 如上图示,MapTask的整个处理流程分五个阶段: ●read阶段:通过RecordReader从InputSplit分片中将数据解析成一个个key/value。 ●map阶段:...

李超
2015/04/03
133
0
Hadoop Mapreduce分区、分组、二次排序过程详解

1、MapReduce中数据流动 (1)最简单的过程: map - reduce (2)定制了partitioner以将map的结果送往指定reducer的过程: map - partition - reduce (3)增加了在本地先进性一次reduce(优...

张欢19933
2016/04/07
507
0

没有更多内容

加载失败,请刷新页面

加载更多

【1015】LNMP架构二

【1015】LNMP架构二 三、PHP安装 PHP安装和LAMP安装PHP方法有差别,需要开启php-fpm服务 1、下载PHP7至/usr/local/src/ 切换目录:cd /usr/local/src 2、解压缩 tar -jxvf php-7.3.0.tar.gz...

飞翔的竹蜻蜓
39分钟前
4
0
浅谈Visitor访问者模式

一、前言 什么叫访问,如果大家学过数据结构,对于这点就很清晰了,遍历就是访问的一般形式,单独读取一个元素进行相应的处理也叫作访问,读取到想要查看的内容+对其进行处理就叫作访问,那么...

青衣霓裳
58分钟前
6
0
JS内嵌多个页面,页面之间如何更快捷的查找相关联的页面

假设parent为P页面, P页面有两个子页面,分别为B页面和C页面; B页面和C页面分别内嵌一个iframe,分别为:D页面和E页面 现在通过B页面的内嵌页面D的方法refreshEpage(eUrl)来加载内嵌页面E的内容...

文文1
59分钟前
7
0
Hibernate 5 升级后 getProperties 错误

升级到 Hibernate 5 后,提示有错误: org.hibernate.engine.spi.SessionFactoryImplementor.getProperties()Ljava/util/Map; 完整的错误栈为: java.lang.NoSuchMethodError: org.hibernate......

honeymoose
今天
6
0
mysql-connector-java升级到8.0后保存时间到数据库出现了时差

在一个新项目中用到了新版的mysql jdbc 驱动 <dependency>     <groupId>mysql</groupId>     <artifactId>mysql-connector-java</artifactId>     <version>8.0.18</version> ......

ValSong
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部