public enum SortBy {
Number,
Weights1,
Weights2
}import java.util.Comparator;
public class MyComparator implements Comparator<Student>{
private SortBy sortBy;
public MyComparator (SortBy sortBy){
this.sortBy = sortBy;
}
@Override
public int compare(Student s1, Student s2) {
switch (this.sortBy) {
case Weights1:
return s1.getWeights1() - s2.getWeights1();
case Weights2:
return s1.getWeights2() - s2.getWeights2();
default:
return s1.getNumber() - s2.getNumber();
}
}
}import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;
public class Student {
private int number;
private int weights1;
private int weights2;
public Student(int number, int weights1, int weights2) {
this.number = number;
this.weights1 = weights1;
this.weights2 = weights2;
}
public int getNumber() {
return this.number;
}
public int getWeights1() {
return this.weights1;
}
public int getWeights2() {
return this.weights2;
}
public static void main(String[] args){
final Student s1 = new Student(1, 20, 300);
final Student s2 = new Student(2, 10, 100);
final Student s3 = new Student(3, 30, 200);
final List<Student> array = new LinkedList<Student>();
array.add(s1);
array.add(s2);
array.add(s3);
final Comparator<Student> numberComparator = new MyComparator(SortBy.Number);
Collections.sort(array, numberComparator);
System.out.println("sort by number");
System.out.print("Number: ");
for(Student s: array){
System.out.print(s.getNumber() + " ");
}
System.out.println("\n\n");
final Comparator<Student> weights1Comparator1 = new MyComparator(SortBy.Weights1);
System.out.println("sort by weights1");
System.out.print("Number: ");
Collections.sort(array, weights1Comparator1);
for(Student s: array){
System.out.print(s.getNumber() + " ");
}
System.out.println("\n\n");
final Comparator<Student> weights2Comparator = new MyComparator(SortBy.Weights2);
System.out.println("sort by weights2");
System.out.print("Number: ");
Collections.sort(array, weights2Comparator);
for(Student s: array){
System.out.print(s.getNumber() + " ");
}
System.out.println("\n\n");
}
}sort by number
Number: 1 2 3
sort by weights1
Number: 2 1 3
sort by weights2
Number: 2 3 1
温馨提示:答案为网友推荐,仅供参考