之前用C++做题,结构体排序一般都是重载sort,最近用java遇到排序的,返回值也总是记混,在此记录一下。
下面用的是Collections类中的sort方法对list排序,并重写了Comparator。
import java.util.Comparator;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<City> list = new LinkedList<City>();
list.add(new City(0,2));
list.add(new City(1,3));
list.add(new City(2,3));
list.add(new City(3,2));
Collections.sort(list, new Comparator<City>() {
public int compare(City a, City b) {
if(a.num == b.num) { //num相等,编号大的在前
return b.id - a.id;
}else { //num不相等,num小的在前
return a.num - b.num;
}
}
});
System.out.println(list);
}
}
class City {
int id;
int num;
public City(int id, int num) {
super();
this.id = id;
this.num = num;
}
@Override
public String toString() {
return "City [id=" + id + ", num=" + num + "]";
}
}
结果:
[City [id=3, num=2], City [id=0, num=2], City [id=2, num=3], City [id=1, num=3]]
除此之外,还可以对list中的对象实现Comparable接口。