Map 按值排序
来源:互联网 发布:知耻近乎勇下一句 编辑:程序博客网 时间:2024/05/20 23:40
类似的C++代码:
typedef pair<string, int> PAIR;
上面方法的实质意义是:将Map结构中的键值对(Map.Entry)封装成一个自定义的类(结构),或者直接用Map.Entry类。自定义类知道自己应该如何排序,也就是按值排序,具体为自己实现Comparable接口或构造一个Comparator对象,然后不用Map结构而采用有序集合(SortedSet, TreeSet是SortedSet的一种实现),这样就实现了Map中sort by value要达到的目的。就是说,不用Map,而是把Map.Entry当作一个对象,这样问题变为实现一个该对象的有序集合或对该对象的集合做排序。既可以用SortedSet,这样插入完成后自然就是有序的了,又或者用一个List或数组,然后再对其做排序(Collections.sort() or Arrays.sort())。
typedef pair<string, int> PAIR;
int cmp(const PAIR& x, const PAIR& y)
{
return x.second > y.second;
}
map<string,int> m;
vector<PAIR> vec;
for (map<wstring,int>::iterator curr = m.begin(); curr != m.end(); ++curr)
{
vec.push_back(make_pair(curr->first, curr->second));
}
sort(vec.begin(), vec.end(), cmp);
{
return x.second > y.second;
}
map<string,int> m;
vector<PAIR> vec;
for (map<wstring,int>::iterator curr = m.begin(); curr != m.end(); ++curr)
{
vec.push_back(make_pair(curr->first, curr->second));
}
sort(vec.begin(), vec.end(), cmp);
上面方法的实质意义是:将Map结构中的键值对(Map.Entry)封装成一个自定义的类(结构),或者直接用Map.Entry类。自定义类知道自己应该如何排序,也就是按值排序,具体为自己实现Comparable接口或构造一个Comparator对象,然后不用Map结构而采用有序集合(SortedSet, TreeSet是SortedSet的一种实现),这样就实现了Map中sort by value要达到的目的。就是说,不用Map,而是把Map.Entry当作一个对象,这样问题变为实现一个该对象的有序集合或对该对象的集合做排序。既可以用SortedSet,这样插入完成后自然就是有序的了,又或者用一个List或数组,然后再对其做排序(Collections.sort() or Arrays.sort())。
- map按值排序
- map按值排序
- Map 按值排序
- map按值排序
- map按值排序
- map按值排序
- Map按值排序
- STL map 按值排序
- STL map 按值排序
- Map按值进行排序
- java Map 按值排序
- map 按键按值排序
- Map排序---按value值排序
- Map排序及HashMap按键排序和按值排序
- Map 按值排序 (Map sort by value) - Java
- Map 按值排序 (Map sort by value) - Java
- 如何对于Map类型按值排序
- 将map按值进行排序
- Android深入浅出系列之实例应用—如何在一个Activity里调用另外一个Activity?
- android 读写文件
- 获取日期时间的方法
- Sqlserver中存储过程,触发器,自定义函数(一)
- 忘却的纪念:我的摩托罗拉3G网络工程师培训笔记
- Map 按值排序
- Android logcat 怎么输出中文
- 抹盘,从snow leopard到lion安装教程
- j2ee工程汉字编码问题
- GDB 命令详细解释
- .NET Framework NGEN 导致开机网络连接启动变慢
- 不同浏览器的差异
- Yii创建控制器
- iframe 显示页面和隐藏