Java的使用Collections 类的sort方法,用返回正数时重新排序
List<Pair<Integer,String>> list1 = new ArrayList<>();
list1.add(new Pair(10, "aaa"));
list1.add(new Pair(11, "cc"));
list1.add(new Pair(12, "dd"));
list1.add(new Pair(10, "aa"));
list1.add(new Pair(10, "ab"));
Comparator<Pair<Integer,String>> comparator1 = (a, b) -> {
if (a.getKey() == b.getKey()) return a.getValue().compareTo(b.getValue()) ;//按照字典序小到大排序
return a.getKey()-b.getKey() ;
//返回正数时重新排序,负数不操作,也即默认按小到大排序
};
Collections.sort(list1,comparator1);
//输出结果:[10=aa, 10=aaa, 10=ab, 11=cc, 12=dd]
System.out.println(list1);
c++使用sort方法,用vector封装,返回false重新排序
vector<pair<int ,string>> v;
v.push_back(pair<int ,string>(10,"aa"));
v.push_back(pair<int ,string>(20,"bb"));
v.push_back(pair<int ,string>(30,"cc"));
v.push_back(pair<int ,string>(10,"a"));
v.push_back(pair<int ,string>(10,"ab"));
sort(v.begin(),v.end(),[&](pair<int ,string> &a,pair<int ,string> &b){
if(a.first==b.first) return b.second>a.second;
else return b.second>a.second;
});
//结果10 :a ,10 : aa ,10 :ab ,20 : bb,30 :cc