Map中根据value值的大小进行排序

package com.test;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.Map.Entry;public class Test1 {/** * @param args */public static void main(String[] args) {Map map = new HashMap();map.put("abc", 5);map.put("dfe", 8);map.put("ghk", 1);List<Map.Entry> entryLists = new ArrayList<Map.Entry>(map.entrySet());Collections.sort(entryLists, new EntryComparator());//sort根据指定比较器产生的顺序对指定列表进行排序for(Map.Entry entryList : entryLists){System.out.println(entryList.getKey()+":-->"+entryList.getValue());//}}public static class EntryComparator implements Comparator<Map.Entry>{ // value列表顺序的比较器@Overridepublic int compare(Entry o1, Entry o2) {//重写compare方法return o1.getValue()-o2.getValue();//升序排列// return o2.getValue()-o1.getValue();//降序排列}}}
在 Qt ,可以使用 `QMap` 类来实现一个键对的映射。要按对 `QMap` 的键进行排序,可以将 `QMap` 的键对存储到一个 `QList` ,然后使用 `qSort` 函数对 `QList` 的元素进行排序。 以下是一个示例代码: ```cpp #include <QMap> #include <QList> #include <QDebug> int main() { // 创建一个 QMap 对象 QMap<QString, int> myMap; myMap.insert("a", 10); myMap.insert("b", 5); myMap.insert("c", 20); myMap.insert("d", 15); // 创建一个 QList 对象,并将 QMap 的元素存储到 QList QList<QPair<QString, int>> myList; for (auto iter = myMap.begin(); iter != myMap.end(); ++iter) { myList.append(qMakePair(iter.key(), iter.value())); } // 使用 qSort 函数对 QList 的元素进行排序 qSort(myList.begin(), myList.end(), [](const QPair<QString, int>& a, const QPair<QString, int>& b) { return a.second > b.second; // 按从大到小排序 }); // 输出排序后的结果 for (auto iter = myList.begin(); iter != myList.end(); ++iter) { qDebug() << iter->first << iter->second; } return 0; } ``` 输出结果为: ``` "c" 20 "d" 15 "a" 10 "b" 5 ``` 在此示例,我们首先创建一个 `QMap` 对象并插入一些键对。然后,我们创建一个 `QList` 对象,并将 `QMap` 的元素存储到 `QList` 。接下来,我们使用 `qSort` 函数对 `QList` 的元素进行排序排序函数使用一个 lambda 表达式来定义。最后,我们输出排序后的结果。 需要注意的是,由于 Qt 的 `QMap` 类是基于红黑树实现的,因此插入元素时会自动按键的顺序进行排序。如果您想要按对 `QMap` 进行排序,可以使用上述方法将键对存储到 `QList` ,然后对 `QList` 进行排序
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值