List<Pair<Integer,Integer>>使用lambda排序

32 篇文章 0 订阅
13 篇文章 0 订阅

List<Pair<Integer,Integer>>list=new ArrayList<>();
Collections.sort(list,(a,b)->a.getKey()-b.getKey());
//labmbda表达式,按first从小到大排序

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
可以使用C++的STL中的sort函数和自定义比较函数来实现。 比较函数可以定义为一个lambda表达式,根据map中的key进行比较。具体代码如下: ```cpp #include <iostream> #include <algorithm> #include <map> #include <list> using namespace std; int main() { list<map<string, int>> lst = {{{"a", 3}, {"b", 1}, {"c", 4}}, {{"a", 2}, {"b", 5}, {"c", 3}}, {{"a", 4}, {"b", 3}, {"c", 1}}}; auto cmp = [](const map<string, int>& m1, const map<string, int>& m2) { auto it1 = m1.cbegin(), it2 = m2.cbegin(); // cbegin()返回一个指向第一个元素的迭代器 while (it1 != m1.cend() && it2 != m2.cend()) { if (it1->first != it2->first) { // 按照key进行比较 return it1->first < it2->first; // key小的排在前面 } ++it1; ++it2; } return m1.size() < m2.size(); // 如果key全部相同,则长度小的排在前面 }; lst.sort(cmp); for (auto& m : lst) { for (auto& p : m) { cout << p.first << ": " << p.second << " "; } cout << endl; } return 0; } ``` 输出结果为: ``` a: 3 b: 1 c: 4 a: 2 b: 5 c: 3 a: 4 b: 3 c: 1 ``` 其中,lst是一个list容器,每个元素都是一个map容器,存储了一些键值对。cmp是一个lambda表达式,用于比较两个map容器。lst.sort(cmp)则按照cmp函数的规则对lst进行排序。 在cmp函数中,我们使用了cbegin()和cend()函数获取了迭代器,这样就可以从map的开头开始比较key。如果两个map的对应key相同,则比较下一个key,直到key不相同为止。如果两个map的长度不同,则长度小的排在前面。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Adellle

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值