ArrayList集合存储学生并排序
案例:ArrayList集合存储学生并排序 需求:ArrayList集合存储学生对象,使用Collections对ArrayList集合进行排序 要求:按照年龄从小到大排序,年龄相同时,按照姓名的字母顺序排序。TreeSet集合也可以实现
思路: 1、定义学生类 2、创建ArrayList集合的对象 3、创建学生对象 4、把学生添加到集合 5、使用Collections对ArrayList集合进行排序 6、遍历集合
ArrayList集合存储学生并排序的练习
xxxxxxxxxx
package ch17;
public class a_12_1Student {
//成员变量
private String name;
private int age;
//无参构造方法
public a_12_1Student() {
}
//无参构造方法
public a_12_1Student(String name, int age) {
this.name = name;
this.age = age;
}
//成员变量对应的get、set方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
xxxxxxxxxx
package ch17;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
//该案例优先按年龄从小到大排序,当年龄相同时。才按照姓名的字母顺序排序
public class a_12_2测试 {
public static void main(String[] args) {
//创建ArrayList集合的对象
ArrayList<a_12_1Student> array = new ArrayList<a_12_1Student>();
//创建学生对象
a_12_1Student s1 = new a_12_1Student("张三", 18);
a_12_1Student s2 = new a_12_1Student("李四", 18);
a_12_1Student s3 = new a_12_1Student("王五", 19);
a_12_1Student s4 = new a_12_1Student("小明", 18);
a_12_1Student s5 = new a_12_1Student("小红", 20);
//把学生添加到集合
array.add(s1);
array.add(s2);
array.add(s3);
array.add(s4);
array.add(s5);
//使用Collections对ArrayList集合进行排序
//Collections.sort(array);//这里直接写会报错,解决有两种写法,如下
//1、我们可以去学生类里面实现自然排序接口Comparable
//2、通过Collections里面的sort(List<T> list,Comparator<? super T> c)方法来实现,即
// 给定一个比较器Comparator,按照比较器指定的规则来排序。这里我们使用这种方法来解决,如下
Collections.sort(array, new Comparator<a_12_1Student>() {//直接在array后面接着写,用匿名内部类实现
public int compare(a_12_1Student s1, a_12_1Student s2) {//注意这里用我们对应的名s1、s2
//这里写主要条件和次要条件,主要条件是按年龄从小到大排,如下
int num = s1.getAge() - s2.getAge();
//次要条件是,当下面相同时,按姓名的字母顺序排序,如下
int num2 = num == 0 ? s1.getName().compareTo(s2.getName()) : num;
return num2;
}
});
//用增强for实现遍历
for (a_12_1Student s : array) {
System.out.println(s.getName() + "," + s.getAge());
}
}
}