collections.sort()使用时注意的问题
问题描述:
自定义排序一个List<Pair<Integer, Integer>>,根据pair的key由小到大排序,如果相同,则根据pair的value由大到小排序。
最开始写的比较器如下:
Collections.sort(list, new Comparator<Pair<Integer, Integer>>() {
@Override
public int compare(final Pair<Integer, Integer> o1, final Pair<Integer, Integer> o2) {
if(o1.getKey() != o2.getKey())
return o1.getKey() - o2.getKey();
else{
return o2.getValue() - o1.getValue();
}
}
});
但是由于Pair的getKey()和getValue()方法返回的是Object对象,是不能直接比较两个对象的,这里耽误了好久- -。
正确的写法是新建变量存储Pair的key和value值,再进行比较。
Collections.sort(list, new Comparator<Pair<Integer, Integer>>() {
@Override
public int compare(final Pair<Integer, Integer> o1, final Pair<Integer, Integer> o2) {
int x1 = o1.getKey();
int y1 = o1.getValue();
int x2 = o2.getKey();
int y2 = o2.getValue();
if(x1 != x2)
return x1 - x2;
else{
return y2 - y1;
}
}
});
collections.sort()使用时注意的问题的更多相关文章
- 5.4 集合的排序(Java学习笔记)(Collections.sort(),及Arrays.sort()底层分析)
1.Comparable接口 这个接口顾名思义就是用于排序的,如果要对某些对象进行排序,那么该对象所在的类必须实现 Comparabld接口.Comparable接口只有一个方法CompareTo() ...
- java Collections.sort()
sort()是Collections中的静态方法,用于对List容器中的元素排序. 如容器list中存储的是Integer对象 List<Integer> list =Arrays.asL ...
- Comparable和Comparator的区别&Collections.sort的两种用法
在Java集合的学习中,我们明白了: 看到tree,可以按顺序进行排列,就要想到两个接口.Comparable(集合中元素实现这个接口,元素自身具备可比性),Comparator(比较器,传入容器构造 ...
- 泛型的排序问题(Collections.sort及Comparable的应用)
一.前言 java中对泛型(集合类型)排序的问题,主要采用了两张方式一种是对要排序的实体类,实现Comparable接口,另一种方式,Collections集合工具类进行排序. 二.实现Comp ...
- Java Collections.sort方法对list集合排序
1.排序测试类 package com.ljq.test; import java.util.ArrayList; import java.util.Collections; import java. ...
- list集合的排序Comparator和Collections.sort
一个例子 package sortt; import java.util.ArrayList; import java.util.Collections; import java.util.Compa ...
- Cookie使用时需要注意个数及大小限制
各浏览器对Cookie有一定的限制,在使用时需要格外注意. 各浏览器之间对cookie的不同限制: IE6.0 IE7.0/8.0/9.0+ Opera FF Safari Chrome cook ...
- java中Collections.sort排序详解
Comparator是个接口,可重写compare()及equals()这两个方法,用于比价功能:如果是null的话,就是使用元素的默认顺序,如a,b,c,d,e,f,g,就是a,b,c,d,e,f, ...
- java Collections.sort()实现List排序自定义方法
方法一: package testSimple; import java.util.ArrayList; import java.util.Collections; import java.util. ...
- EntityFrameWork 使用时碰到的小问题
EntityFrameWork 使用时碰到的小问题 1,在使用orm访问数据库的相目里,也要引用EntityFrameWork.dll,否则无法使用orm 否则,编译错误 错误 5 "Sys ...
随机推荐
- 【GDKOI 2024 TG Day2】染色(set) 题解
发现我们给一个点染上色后有: 我们称这是一个大小为 1 的十字. 进一步地,我们给这 5 个点再次染上色后有: 我们称这是一个大小为 2 的十字. 同理可得,我们给这 5 个点染上相同的大小为 2 的 ...
- Java Agent 踩坑之 appendToSystemClassLoaderSearch 问题
简介: 从 Java Agent 报错开始,到 JVM 原理,到 glibc 线程安全,再到 pthread tls,逐步探究 Java Agent 诡异报错. 作者:鲁严波 从 Java Age ...
- WPF 一千个矩形做动画测试性能
在很多性能测试开始之前,都需要测试一下自己的期望优化的设备的性能上限是多少.我每次都是重新写一个测试应用,因为每次需要优化的方向都不相同.本文将记录一个我写的一个简单的测试应用,这里面包含了一千个半透 ...
- WPF 由于系统颜色配置 Mscms 组件损坏启动失败
本文记录 WPF 应用程序,因为系统的颜色配置 Mscms.dll 组件损坏导致应用加载图片失败,从而启动失败的原因和解决方法 在 WPF 应用加载图片时,将会调用到系统的 Mscms.dll 组件. ...
- Caused by: java.lang.ClassNotFoundException: org.apache.http.message.TokenParser
写完程序启动不报错,执行时总是报错 java.lang.ClassNotFoundException: org.apache.http.message.TokenParser 认真检查代码没问题,试了 ...
- 简说Python之ipython的pdb调试
目录 简说Python之ipython 1.安装ipython 2.ipython的使用 3.ipython的debug调试. 系统环境:Ubuntu 18.04.1 LTS Python使用的是虚拟 ...
- ansible(15)--ansible的mount模块
1. mount模块 功能:管理被控端设备挂载: 主要参数如下: 参数 说明 src 本地或远程设备的路径 path 设备挂载至本地的路径 fstype 挂载的文件系统类型,xfs.nfs... op ...
- google账户配置foxmail和使用foxmail
最近想把邮件分门别类,创建一些个人文件夹,更好的筛选邮件,可以尝试使用foxmail 1. 如果你有google账户,在配置foxmail之前需打开google账户的安全设置 https://myac ...
- 鸿蒙stage模型
app.json5全局的配置文件 icon和label是应用列表的 module.json5模块配置文件 中有一个abilities其中的icon和label才是桌面的图标和名称 日志的话就是hail ...
- 热烈祝贺 Splashtop 荣获“最佳远程办公解决方案”奖
2021年2月,第十四届加拿大年度"经销商选择奖"落下帷幕.Splashtop在此次评选中荣获"最佳远程办公解决方案"奖,获得该奖项的还有微软和谷歌. 一直 ...