Map根据Value进行排序

public class SortUtils {

    // Map的value值升序排序
    public static <K, V extends Comparable<? super V>> Map<K, V> sortAsc(Map<K, V> map) {
        List<Map.Entry<K, V>> list = new ArrayList<Map.Entry<K, V>>(map.entrySet());
        Collections.sort(list, new Comparator<Map.Entry<K, V>>() {
            @Override
            public int compare(Map.Entry<K, V> o1, Map.Entry<K, V> o2) {
                int compare = (o1.getValue()).compareTo(o2.getValue());
                return compare;
            }
        });

        Map<K, V> returnMap = new LinkedHashMap<K, V>();
        for (Map.Entry<K, V> entry : list) {
            returnMap.put(entry.getKey(), entry.getValue());
        }
        return returnMap;
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在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、付费专栏及课程。

余额充值