Java学习笔记-----collections的Sort方法

大家好,烦人的我又来了,自己猜菜的一批还出来瞎得瑟,但是我的确是在努力的呀,我相信我一定能学好的,不管你信不信,反正我信了。
接下来,让我们开始不正经的笔记吧。

最近遇到了一个问题:怎么给LinkedList进行排序?其实刚看见这个题的时候很懵,但是突然想起来Collections有一个sort方法,就直接拿来用了,但是还是有问题的,在网上搜了一顿之后,终于找到了该怎么使用了。

现在每天和学生管理系统打交道,我都该吐了,但是没办法呀,谁叫他麻雀虽小,但是五脏俱全呢?就那他来举例子吧。

首先我设计了一个student类
里面存放的信息有学生学号、学生姓名、学生班级号

public class Student {
	private int ID;
	private String name;
	private int class_id;
	public Student(int id,String name,int class_id) {
		this.ID = id;//学号
		this.name = name;//姓名
		this.class_id = class_id;//班级号
	}
	public Student() {}
	public String toString() {
		return String.format("学号:%d 姓名:%s 班级:%d", this.ID,this.name,this.class_id);
	}
}

之后就是建立链表了,储存信息

public class Student {
	private int ID;
	private String name;
	private int class_id;
	public Student(int id,String name,int class_id) {
		this.ID = id;//学号
		this.name = name;//姓名
		this.class_id = class_id;//班级号
	}
	public Student() {}
	public String toString() {
		return String.format("学号:%d 姓名:%s 班级:%d", this.ID,this.name,this.class_id);
	}
}

我这样的话,输出的是什么东西呢?
Java学习笔记-----collections的Sort方法

这个看起来好像不太舒服,我要是想让这个链表排序怎么办呢?
就在这千钧一发之际,我瞟见了一眼Collections.sort()方法
之后想也没想直接使用,结果,哈哈,不出所料,真的……错了

对于基本类型来说,放在linkedlist里面这样使用的话,是能进行排序的。
但是对于自己定义的对象,系统是没有提前定义的,所以需要我们自己定义compare(比较)方法:

直接看代码吧:

public class CompareStudentSno implements Comparator<Student>{

	@Override
	public int compare(Student o1, Student o2) {
		// TODO Auto-generated method stub
		return o1.getSno() - o2.getSno();
	}
	
}

这个比较类,比较的是学生的学号,按照降序排列
那么排序的实现代码是下面这样的:

Collections.sort(list,new CompareStudentSno());

第一个参数是需要排序的链表,第二个参数传入的是这个类的比较方法。

那么输出的结果是什么样的呢?
来一起看看;
Java学习笔记-----collections的Sort方法

上面是没排序的,下面是排序的,是不是看起来很清爽?

哎呀,突然意识到这个好像和之后的compare有关,那么,下一期的更新就写和compare比较相关的吧。
大家灰灰了,多多点赞,会变好看,多多留言,会变有钱呐。