根据map的value大小来进行排序

博客给出了根据map的value大小进行排序的代码实现。定义了sortByComparator方法,将map的键值对放入列表,通过自定义比较器对列表排序,最后将排序后的键值对存入新的LinkedHashMap并返回。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


根据map的value大小来进行排序


public static Map sortByComparator(Map unsortMap){
List list = new LinkedList(unsortMap.entrySet());
Collections.sort(list, new Comparator(){
public int compare(Object o1, Object o2){
return ((Comparable) ((Map.Entry) (o2)).getValue())
.compareTo(((Map.Entry) (o1)).getValue());
}
});
Map sortedMap = new LinkedHashMap();
for (Iterator it = list.iterator(); it.hasNext()? {
Map.Entry entry = (Map.Entry)it.next();
sortedMap.put(entry.getKey(), entry.getValue());
}
return sortedMap;
}

在C++中,你可以使用STL库中的`std::map`和`std::multimap`来实现根据value大小排序的功能。 下面是一个示例代码: ```cpp #include <iostream> #include <map> #include <algorithm> int main() { std::map<std::string, int> myMap = { {"apple", 5}, {"banana", 2}, {"orange", 3}, {"pear", 1}, {"peach", 4} }; // 使用 lambda 表达式定义比较函数 auto cmp = [](const std::pair<std::string, int>& a, const std::pair<std::string, int>& b) { return a.second < b.second; }; // 定义 multimap,并将 map 中的元素插入到 multimap 中 std::multimap<std::string, int, decltype(cmp)> myMultimap(myMap.begin(), myMap.end(), cmp); // 遍历 multimap 输出排序后的结果 for (auto iter = myMultimap.begin(); iter != myMultimap.end(); ++iter) { std::cout << iter->first << " : " << iter->second << std::endl; } return 0; } ``` 这个示例中,先定义了一个`std::map`,其中包含了一些键值对。然后,定义了一个lambda表达式作为比较函数,用于比较`std::pair`类型的元素(其中`std::pair`的第一个元素是键,第二个元素是值)。接着,定义了一个`std::multimap`,并将`std::map`中的元素插入到`std::multimap`中,同时指定了比较函数。最后,遍历`std::multimap`,输出排序后的结果。 需要注意的是,如果有多个元素的value值相同,它们的顺序可能是不确定的。如果需要稳定排序,可以使用`std::stable_sort`函数对`std::vector`类型的元素进行排序,然后将排序后的元素插入到`std::multimap`中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值