博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自己实现一个list比较器 实现Comparator()接口
阅读量:7091 次
发布时间:2019-06-28

本文共 2237 字,大约阅读时间需要 7 分钟。

一:一个实体类
成员变量有名字,年龄,分数
/**  * @author lizhibiao  * @date 2018/11/27 17:21  */ public class User {
private String userName; private int age; private int cutScore; public String getUserName() {
return userName; } public void setUserName(String userName) {
this.userName = userName; } public int getAge() {
return age; } public void setAge(int age) {
this.age = age; } public int getCutScore() {
return cutScore; } public void setCutScore(int cutScore) {
this.cutScore = cutScore; } }
二:实现一个User类的比较器
public class UserComparator implements Comparator
{
@Override public int compare(User o1, User o2) {
if (o1.getAge() > o2.getAge()) {
return -1; } else if (o1.getAge() < o2.getAge()) {
return 1; } else if (o1.getCutScore() < o2.getCutScore()) {
return 1; } else if (o1.getCutScore() > o2.getCutScore()) {
return -1; } return 0; } }
这里注意:
1.类名不能起为Comparator会报错,所以我们加个User前缀。
2.UserComparator要实现Comparator接口,并且接口传入<User>类
3.必须实现compare()方法
4.
if (o1.getAge() > o2.getAge()) {
return -1; } else if (o1.getAge() < o2.getAge()) {
return 1; } else if (o1.getCutScore() < o2.getCutScore()) {
return 1; } else if (o1.getCutScore() > o2.getCutScore()) {
return -1; } return 0;
这个的意思是最优先以年龄排序,并且从年龄大的往下排序,也就是从大到小排序要返回-1(可以看出比较器默认是从小到大排序的)
然后再根据分数从大到小排序
相等返回0
三:看下测试输出结果:
public static void main(String[] args) {
User user1 = new User(); user1.setUserName("小二"); user1.setAge(10); user1.setCutScore(99); User user2 = new User(); user2.setUserName("清水"); user2.setAge(12); user2.setCutScore(98); User user3 = new User(); user3.setUserName("小李"); user3.setAge(10); user3.setCutScore(100); List
list = new ArrayList<>(); list.add(user1); list.add(user2); list.add(user3); Collections.sort(list, new UserComparator()); for (User user : list) {
System.out.println(user.getUserName()+" "+user.getAge()+" "+user.getCutScore()); } }
结果如下:
清水 12 98
小李 10 100
小二 10 99
1549337-20190316155551723-368323478.png
有疑问,扫我二维码添加微信,欢迎骚扰!
坚持做一件事,一起学习。
1549337-20190316155553207-387082730.jpg

转载于:https://www.cnblogs.com/lizb0907/p/10039122.html

你可能感兴趣的文章
不断更新,保持高效
查看>>
Ubuntu 14.04 安装 qemu
查看>>
Android 软键盘弹出,界面整体上移的问题
查看>>
高并发大流量网站架构简单思路
查看>>
Android -- 贝塞尔实现水波纹动画(划重点!!)
查看>>
shell脚本监测文件变化
查看>>
UVA 1426 - Discrete Square Roots(数论)
查看>>
怎样优化cocos2d/x程序的内存使用和程序大小
查看>>
Redis的三种启动方式
查看>>
YII框架分析笔记2:组件和事件行为管理
查看>>
iptables启动脚本分析
查看>>
进阶之路(基础篇) - 013 通过读取可变电阻值调节流水灯的速度
查看>>
GG链路过多port不足导致的报错OGG-01223
查看>>
自然语言交流系统 phxnet团队 创新实训 个人博客 (八)
查看>>
talk is cheap, show me the code——dcgan,wgan,wgan-gp的tensorflow实现
查看>>
Kettle学习系列之数据仓库、数据整合、ETL、ELT和EII之间的区别?
查看>>
把握linux内核设计思想系列
查看>>
zoj1003 Crashing Balloon
查看>>
在EA中将画出的ER图转换成SQL脚本
查看>>
Android Studio怎样删除module
查看>>