版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yushuangping/article/details/84565293
一:针对list
通过java.util.Collections的sort方法,有2个参数,第一个参数是list对象,第二个参数是new Comparator<对象类>(){}方法,这个方法实现了compare()方法,具体代码如下所示:
package com.example.mylearngit;
import com.example.mylearngit.bean.Student;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/**
* Created by YuShuangPing on 2018/11/27.
*/
public class ListSort {
public static void main(String[] args){
List<Student>studentList=new ArrayList<Student>();
studentList.add(new Student(90,"4"));
studentList.add(new Student(90,"3"));
studentList.add(new Student(85,"1"));
studentList.add(new Student(88,"2"));
Collections.sort(studentList, new Comparator<Student>() {
@Override
public int compare(Student t1, Student t2) {
if (t1.score>t2.score){
return 1;
}else if (t1.score<t2.score){
return -1;
}else {
return t1.order.compareTo(t2.order);// 调用String中的compareTo()方法
}
}
});
System.out.println(studentList);
}
}
package com.example.mylearngit.bean;
import android.support.annotation.NonNull;
/**
* Created by YuShuangPing on 2018/11/27.
*/
public class Student {
public int score;
public String order;
public Student(int score, String order) {
this.score = score;
this.order = order;
}
@Override
public String toString() {
return "Student{" +
"score=" + score +
", order='" + order + '\'' +
'}';
}
}
代码执行的结果为:
二:针对set
要排序的对象所属的类implements Comparable接口,重写了compareTo()方法,具体代码如下所示:
package com.example.mylearngit;
import com.example.mylearngit.bean.Person;
import java.util.Set;
import java.util.TreeSet;
/**
* Created by YuShuangPing on 2018/11/27.
*/
public class SetSort {
public static void main(String[] args){
Set<Person>set=new TreeSet<>();
set.add(new Person(18,"3"));
set.add(new Person(18,"2"));
set.add(new Person(16,"4"));
set.add(new Person(17,"1"));
System.out.println(set);
}
}
package com.example.mylearngit.bean;
import android.support.annotation.NonNull;
/**
* Created by YuShuangPing on 2018/11/27.
*/
public class Person implements Comparable<Person>{
public int age;
public String order;
public Person(int age, String order) {
this.age = age;
this.order = order;
}
@Override
public String toString() {
return "Person{" +
"age=" + age +
", order='" + order + '\'' +
'}';
}
@Override
public int compareTo(@NonNull Person person) {
if (this.age>person.age){
return 1;
}else if (this.age<person.age){
return -1;
}else {
return this.order.compareTo(person.order);// 调用String中的compareTo()方法
}
}
}
代码执行的结果为: