通过实体的属性对多个实体进行排序(刚学习完面向对象,写的接口并没有用到,只是为了让**试着写一写接口):
/**
* @comment:学生信息类
* @author 傅里叶级数
* @date 2018年10月22日下午2:18:14
*/
public class Student {
private String name;
private int age;
private int height;
private int mathScore;
private int engScore;
private String schName;
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 int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
public int getMathScore() {
return mathScore;
}
public void setMathScore(int mathScore) {
this.mathScore = mathScore;
}
public int getEngScore() {
return engScore;
}
public void setEngScore(int engScore) {
this.engScore = engScore;
}
public String getSchName() {
return schName;
}
public void setSchName(String schName) {
this.schName = schName;
}
@Override
public String toString() {
return "姓名: "+this.name+" ,年龄: "+this.age+" ,身高:"+this.height+" ,就读学校:"+this.schName+
" ,数学成绩:"+this.mathScore+" ,英语成绩:"+this.engScore;
}
}
/**
* @comment:排序方法接口
* @author 傅里叶级数
* @date 2018年10月22日下午3:46:53
*/
public interface StuSortInt {
/**
* @comment:学生信息排序
* @author:傅里叶级数
* @date:2018年10月22日下午2:40:11
* @param list
*/
public void compareStudent(List<Student> list);
/**
* @comment:学生信息多次排序
* @author:傅里叶级数
* @date:2018年10月22日下午3:28:19
* @param list
*/
public void compareStudentInfo(List<Student> list);
}
/**
*@comment:接口的实现类
*@author 傅里叶级数
*@date 2018年10月22日下午3:28:41
*/
public class StuSortImpl implements StuSortInt{
/**
* @comment:学生信息按照年龄排序
* @author 傅里叶级数
* @date 2018年10月22日下午3:26:43
*/
@Override
public void compareStudent(List<Student> list) {
Comparator<Student> comparator = new Comparator<Student>(){
@Override
public int compare(Student st1, Student st2) {
return st2.getAge()-st1.getAge();
}
};
Collections.sort(list, comparator);
for (Student student : list) {
System.out.println(student.toString());
}
}
/**
* @comment:学生信息多重排序
* @author 傅里叶级数
* @date 2018年10月22日下午3:28:50
*/
@Override
public void compareStudentInfo(List<Student> list) {
Comparator<Student> comparator = new Comparator<Student>(){
@Override
public int compare(Student st1, Student st2) { // 重写compare方法
if(st2.getAge()!=st1.getAge()){ // 按照年龄标准
return st2.getAge()-st1.getAge();
}else if(!st2.getName().equals(st1.getName())){ // 年龄相同,按照姓名标准
return st2.getName().compareTo(st1.getName());
}else{
return st2.getMathScore()-st1.getMathScore(); // 按照数学成绩标准
}
}
};
// 调用Collection的sort方法进行排序
Collections.sort(list, comparator);
// 遍历
for (Student student : list) {
System.out.println(student.toString());
}
}
}
/**
* @comment:学生信息管理
* @author 傅里叶级数
* @date 2018年10月22日下午2:19:10
*/
public class StudentController {
public static void main(String[] args) {
/**
* 学生信息造数据
*/
Student stu = new Student();
Student stu1 = new Student();
Student stu2 = new Student();
Student stu3 = new Student();
stu.setName("叶良辰");
stu.setAge(22);
stu.setSchName("蓝翔");
stu.setHeight(171);
stu.setMathScore(85);
stu.setEngScore(88);
stu1.setName("赵日天");
stu1.setAge(23);
stu1.setSchName("绿翔");
stu1.setHeight(176);
stu1.setMathScore(99);
stu1.setEngScore(77);
stu2.setName("叶良辰");
stu2.setAge(28);
stu2.setSchName("鸿翔");
stu2.setHeight(180);
stu2.setMathScore(99);
stu2.setEngScore(99);
stu3.setName("科大爷");
stu3.setAge(23);
stu3.setSchName("洛翔");
stu3.setHeight(198);
stu3.setMathScore(23);
stu3.setEngScore(32);
List<Student> list = new ArrayList<>();
list.add(stu);
list.add(stu1);
list.add(stu2);
list.add(stu3);
StuSortImpl stuSortImpl = new StuSortImpl();
//1.按照年龄排序
stuSortImpl.compareStudent(list);
System.out.println("按照多个标准排序:");
//2.多个标准
stuSortImpl.compareStudentInfo(list);
}
}
结果:
姓名: 叶良辰 ,年龄: 28 ,身高:180 ,就读学校:鸿翔 ,数学成绩:99 ,英语成绩:99
姓名: 赵日天 ,年龄: 23 ,身高:176 ,就读学校:绿翔 ,数学成绩:99 ,英语成绩:77
姓名: 科大爷 ,年龄: 23 ,身高:198 ,就读学校:洛翔 ,数学成绩:23 ,英语成绩:32
姓名: 叶良辰 ,年龄: 22 ,身高:171 ,就读学校:蓝翔 ,数学成绩:85 ,英语成绩:88
按照多个标准排序:
姓名: 叶良辰 ,年龄: 28 ,身高:180 ,就读学校:鸿翔 ,数学成绩:99 ,英语成绩:99
姓名: 赵日天 ,年龄: 23 ,身高:176 ,就读学校:绿翔 ,数学成绩:99 ,英语成绩:77
姓名: 科大爷 ,年龄: 23 ,身高:198 ,就读学校:洛翔 ,数学成绩:23 ,英语成绩:32
姓名: 叶良辰 ,年龄: 22 ,身高:171 ,就读学校:蓝翔 ,数学成绩:85 ,英语成绩:88