java比较器comparator使用示例分享
发布时间:2022-07-18 22:45:15
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class ComparatorTest implements Comparator<stuEntity> {
/**
* @param args
*/
public static void main(String[] args) {
List<stuEntity> list = new ArrayList<stuEntity>();
stuEntity stud1=new stuEntity();
stud1.setAge(10);
stud1.setName("abc");
stuEntity stud2=new stuEntity();
stud2.setAge(10);
stud2.setName("bdc");
stuEntity stud3=new stuEntity();
stud3.setAge(5);
stud3.setName("bdd");
stuEntity stud4=new stuEntity();
stud4.setAge(30);
stud4.setName("aad");
list.add(stud1);
list.add(stud2);
list.add(stud3);
list.add(stud4);
Collections.sort(list, new ComparatorTest());
for(stuEntity stud:list){
System.out.println(stud.getAge()+":"+stud.getName());
}
}
/**
*
*/
@Override
public int compare(stuEntity stud1, stuEntity stud2) {
//根据姓名排序
int maxname=stud1.getName().compareTo(stud2.getName());
if(maxname!=0)
return maxname;
//根据年龄排序
int maxage=stud1.getAge()-stud2.getAge();
//if(maxage!=0)
return maxage;
}
}
输出:
30:aad
10:abc
10:bdc
5:bdd
java的比较器很有用,实现Comparator接口的compare()这个回调方法来制定排序规则,然后调用Collections.sort(list, new ComparatorTest());就可以将List进行排序,很方便
使用时要注意compare()方法中的return的先后顺序,优先的排序规则要写在前面
实体类:
/**
* 学生实体类
*
*/
public class stuEntity {
private int studentId;// 学号
private String name;
private int age;
private String sex;// 性别
private int roomNumber;// 房间号
private String degree;//学位
private int grade;//年级
private String deviceNumber;// 设备号
private int groupNumber;// 所属的小组
private int javaScore;// java成绩
private int netScore;// NET成绩
public String getDegree() {
return degree;
}
public void setDegree(String degree) {
this.degree = degree;
}
public int getGrade() {
return grade;
}
public void setGrade(int grade) {
this.grade = grade;
}
/**
* 初始化有参构造函数
*
* @param id
* @param name
* @param age
* @param sex
* @param roomNumber
* @param deviceNumber
* @param groupNumber
* @param javaScore
* @param netScore
*/
public stuEntity(String name, int age, String sex, int roomNumber,
String deviceNumber, int groupNumber, int javaScore, int netScore) {
this.name = name;
this.age = age;
this.sex = sex;
this.roomNumber = roomNumber;
this.deviceNumber = deviceNumber;
this.groupNumber = groupNumber;
this.javaScore = javaScore;
this.netScore = netScore;
}
/**
* 无参构造函数
*/
public stuEntity() {
}
public int getJavaScore() {
return javaScore;
}
public void setJavaScore(int javaScore) {
this.javaScore = javaScore;
}
public int getNetScore() {
return netScore;
}
public void setNetScore(int netScore) {
this.netScore = netScore;
}
public int getStudentId() {
return studentId;
}
public void setStudentId(int studentId) {
this.studentId = studentId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getRoomNumber() {
return roomNumber;
}
public void setRoomNumber(int roomNumber) {
this.roomNumber = roomNumber;
}
public String getDeviceNumber() {
return deviceNumber;
}
public void setDeviceNumber(String deviceNumber) {
this.deviceNumber = deviceNumber;
}
public int getGroupNumber() {
return groupNumber;
}
public void setGroupNumber(int groupNumber) {
this.groupNumber = groupNumber;
}
}


猜你喜欢
- android线程消息机制主要由Handler,Looper,Message和MessageQuene四个部分组成。平常在开发中,我们常用来
- 1.使用matlab作闭合多边形图没有找到直接画多边形的函数,只能是将各个点的坐标保存在数组中,将一个点与其相邻的点相连,并将最后一个点与第
- 本文实现案例场景: 某系统除了需要从自己的主要数据库上读取和管理数据外,还有一部分业务涉及到其他多个数据库,要求可以在任何方法上可以灵活指定
- 本文实例为大家分享了android拖拽框,裁剪出图片的具体代码,供大家参考,具体内容如下import android.graphics.Bi
- 1.申请微信公众号我们要进行微信公众平台的开发,第一步当然是要有公众号了。什么?不知道什么是微信公众号,看来你还要先回炉炼炼了,呵呵。通俗的
- 前言各位小伙伴大家好,我是A哥。IDEA上个较大版本的发布,要追溯到4月份了:时隔近4个月,北京时间2020-07-28深夜,Intelli
- 前言现在APP中用到H5页面的越来越多,而如何正确获取WebView的网页title是必须要考虑的。最近做项目的时候,老大让我把之前做的we
- 本文实例讲述了Java获取时间年、月、日的方法。分享给大家供大家参考。具体实现方法如下:package com.date.demo; imp
- 前言这几天听朋友说JPA很好用,根本不用写sql。我在想一个程序员不写sql还能叫程序员?而且越高级的工具封装越多的工具,可拓展性和效率就非
- 一、问题描述有时候,我们会遇到在遍历List集合的过程中删除数据的情况。看着自己写的代码,感觉完全没有问题,但就是达不到预期的效果,这是为什
- md5 属于hash算法一类,是不可逆的消息摘要算法。与对称加密和非对称加密算法不一样,不需要加密密钥。注意:md5不是加密算法,只是将数据
- C# 后台:.ToString("dd-MMM-yyyy", System.Globalization. DateTim
- 本文实例讲述了.net文件上传时实现通过文件头确认文件类型的方法,其中 script 用来返回给页面的数据,读者还可以根据自身需要对相关部分
- 去年谷歌 I/O大会上介绍了一个非常厉害的新框架DataBinding, 数据绑定框架给我们带来了很大的方便,以前我们可能需要在每个Acti
- 今天在面试时遇到一道算法的题:给定一个字符串,输出每次字符出现的次数;要求按照顺序输出;自己的思路开始是:1.把String转换char数组
- 可能有些同学不明白,为啥要图片反转(不是旋转哦),我们在游戏开发中,为了节省图片资源(空间) 有可能会使用到图片反转,例如,一个人物图片,面
- 一、着色游戏概述近期群里偶然看到一哥们在群里聊不规则图像填充什么四联通、八联通什么的,就本身好学务实的态度去查阅了相关资料。对于这类着色的资
- jasperreport导出的pdf每页显示的记录太少主要是确保Details的高度与Details中Field Text的高度一致。jas
- 本文实例讲述了C# Socket网络编程技巧。分享给大家供大家参考。具体分析如下:客户端要连接服务器:首先要知道服务器的IP地址。而服务器里
- HttpServletRequest介绍HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HT