对集合中的数据进行相关排序(comparable接口)
实现方式一:
将需要排序的类去实现Comparable<>接口
//student.java
package com.bjsxt.comparable;
/**
* 学生类
*/
public class Student implements Comparable<Student>{
private String name;
private char gender;
private int age;
private int score;
public char getGender() {
return gender;
}
public void setGender(char gender) {
this.gender = gender;
}
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 getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
public Student(String name, char gender, int age, int score) {
super();
this.name = name;
this.gender = gender;
this.age = age;
this.score = score;
}
@Override
public int compareTo(Student o) {//按照性别排序
// TODO Auto-generated method stub
return this.gender - o.gender;
}
}
//Test1.java
package com.bjsxt.comparable;
import java.util.ArrayList;
import java.util.Collections;
/**
* 实现Comparable接口来实现对象间属性的对比排序
* @author taoyulong
*
*/
public class Test1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList<Student> students = new ArrayList<>();
students.add(new Student("张三",'男', 1, 189));
students.add(new Student("李四", '女',6, 940));
students.add(new Student("王五", '男',13, 170));
students.add(new Student("赵六", '男',128, 380));
System.out.println("排序前:");
for (Student student : students) {
System.out.println("姓名:"+student.getName()+" "+
"性别:"+student.getGender()+" "+
" 年龄:"+student.getAge()+" "+
" 成绩:"+student.getScore());
}
// 排序
Collections.sort(students);
System.out.println("排序后:");
for (Student student : students) {
System.out.println("姓名:"+student.getName()+" "+
"性别:"+student.getGender()+" "+
" 年龄:"+student.getAge()+" "+
" 成绩:"+student.getScore());
}
}
}
实现方式二:
通过实现Comparator的匿名内部类类对对象进行相关的排序
//students.java
package com.bjsxt.comparable;
/**
* 学生类
*/
public class Students{
private String name;
private char gender;
private int age;
private int score;
public char getGender() {
return gender;
}
public void setGender(char gender) {
this.gender = gender;
}
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 getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
public Students(String name, char gender, int age, int score) {
super();
this.name = name;
this.gender = gender;
this.age = age;
this.score = score;
}
}
//Test2.java
package com.bjsxt.comparable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
/**
* 通过Comparator的匿名内部类来实现对对象中的属性进行排序
* @author taoyulong
*
*/
public class Test2 {
public static void main(String[] args) {
ArrayList<Students> students = new ArrayList<>();
students.add(new Students("张三",'男', 1, 189));
students.add(new Students("李四", '女',6, 940));
students.add(new Students("王五", '男',13, 170));
students.add(new Students("赵六", '男',128, 380));
System.out.println("排序前:");
for (Students student : students) {
System.out.println("姓名:"+student.getName()+" "+
"性别:"+student.getGender()+" "+
" 年龄:"+student.getAge()+" "+
" 成绩:"+student.getScore());
}
// 排序
Collections.sort(students,new Comparator<Students>() {
@Override
public int compare(Students o1, Students o2) {
// TODO Auto-generated method stub
return o1.getScore()-o2.getScore();
}
});
System.out.println("排序后:");
for (Students student : students) {
System.out.println("姓名:"+student.getName()+" "+
"性别:"+student.getGender()+" "+
" 年龄:"+student.getAge()+" "+
" 成绩:"+student.getScore());
}
}
}
浙公网安备 33010602011771号