Collect.sort()函数 结果默认升序(既1,2,3,4)排列,可通过重写compare方法实现自定义规则排序
说明:
1.下面的代码运行在main函数中,
2.创建Student类 属性
public int s_no;
public String s_name;
public int s_class;
/*
Collect.sort()函数重写
*/
ArrayList<Student> studentArr = new ArrayList<Student>();
Student s1 = new Student();
s1.s_no = 3;
s1.s_name = "a";
s1.s_class = 102;
studentArr.add(s1);
Student s2 = new Student();
s2.s_no = 2;
s2.s_name = "b";
s2.s_class = 101;
studentArr.add(s2);
Student s3 = new Student();
s3.s_no = 1;
s3.s_name = "c";
s3.s_class = 103;
studentArr.add(s3);
System.out.println("排序前:");
for (int i = 0; i < studentArr.size(); i++) {
System.out.println("我是" + studentArr.get(i).s_class + "班的"
+ studentArr.get(i).s_name + "学号是"
+ studentArr.get(i).s_no);
}
//Collecttions.sort()的第一个参数是要比较的数据,第二个参数是比较规则
Collections.sort(studentArr, new Comparator<Object>() {
public int compare(Object o1, Object o2) {
//你首先设置你要比较的东西
//具体是把参数中的Object强制转换成你要比较的东西,这里是两个Student类
//这里的s1,s2与上面的s1,s2一点关系都没有,只是抽象的前者与后者的关系
Student s1 = (Student) o1;
Student s2 = (Student) o2;
//如果前者的学号大于后者的学号,就是前者大于后者,返回1系统就会识别是前者大于后者
//升序降序用大于小于或者返回值决定(重点)
if (s1.s_no > s2.s_no) {
return -1;
}
//小于同理
if (s1.s_no < s2.s_no) {
return 1;
}
//如果返回0则认为前者与后者相等
return 0;
}
});
//比较完毕再输出以学号排序之后的结果
System.out.println("按学号排序后:");
for (int i = 0; i < studentArr.size(); i++) {
System.out.println("我是" + studentArr.get(i).s_class + "班的"
+ studentArr.get(i).s_name + "学号是"
+ studentArr.get(i).s_no);
}
//以下是以班级排序的过程
Collections.sort(studentArr, new Comparator<Object>() {
public int compare(Object o1, Object o2) {
Student s1 = (Student) o1;
Student s2 = (Student) o2;
if (s1.s_class > s2.s_class) {
return 1;
}
if (s1.s_class < s2.s_class) {
return -1;
}
return 0;
}
});
System.out.println("按班级排序后:");
for (int i = 0; i < studentArr.size(); i++) {
System.out.println("我是" + studentArr.get(i).s_class + "班的"
+ studentArr.get(i).s_name + "学号是"
+ studentArr.get(i).s_no);
}
文章内容来源于本人通过网络各方知识的学习,理解,总结,编辑。
仅用于学习。有拷贝网络相同的代码,只声明代码通过运行测试的正确性。