Java自定义类排序

之前用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接口。

发布了56 篇原创文章 · 获赞 4 · 访问量 1696

猜你喜欢

转载自blog.csdn.net/qq_41342326/article/details/104144046