ArrayList集合存储学生并排序
案例:ArrayList集合存储学生并排序 需求:ArrayList集合存储学生对象,使用Collections对ArrayList集合进行排序 要求:按照年龄从小到大排序,年龄相同时,按照姓名的字母顺序排序。TreeSet集合也可以实现
思路: 1、定义学生类 2、创建ArrayList集合的对象 3、创建学生对象 4、把学生添加到集合 5、使用Collections对ArrayList集合进行排序 6、遍历集合
ArrayList集合存储学生并排序的练习
xxxxxxxxxxpackage 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; }
}xxxxxxxxxxpackage 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()); }
}}