114-汉字比较器

9 public class Test03 {
10     public static void main(String[] args) {
11         //1)定义List集合存储Student对象, 通过泛型指定存储元素类型为Student
12         List<Student> list = new ArrayList<>();
13 
14         //2) 向集合中添加元素19         list.add(new Student("wangwu", 26, 78));
20         list.add(new Student("zhaoliu", 23, 78.5));
21         list.add(new Student("chenqi", 27, 78.8));
22         list.add(new Student("zhangsan", 21, 86));
23         list.add(new Student("feifei", 26, 54));41 
42         //6) 对集合中学生对象根据年龄升序排序
43         list.sort(new Comparator<Student>() {
44             @Override
45             public int compare(Student o1, Student o2) {
46                 //o1的年龄大返回正数
47                 return o1.getAge() - o2.getAge();
48             }
49         });61 
62         //8)根据姓名升序排序
63         list.add(new Student("陈飞", 18, 99));
64         list.add(new Student("张晓三", 18, 29));
65         list.add(new Student("李大四", 68, 79));
66         list.sort(new Comparator<Student>() {
67             @Override
68             public int compare(Student o1, Student o2) {
69                 return o1.getName().compareTo(o2.getName());
70                 //compareTo()方法比较的是字符的码值
71             }
72         });
73         printInfo(list);
74 
75         //9) 根据姓名升序排序, 根据汉字顺序比较
76         //先获得一个汉字的比较器
77         Comparator cmp = Collator.getInstance(Locale.CHINESE);
78         list.sort(new Comparator<Student>() {
79             @Override
80             public int compare(Student o1, Student o2) {
81                 return cmp.compare(o1.getName(), o2.getName());
82             }
83         });
84         printInfo(list);
85 
86     }94 }

 

package list;

import java.text.Collator;
import java.util.*;

/**
* List集合存储Student对象
*/
public class Test03 {
public static void main(String[] args) {
//1)定义List集合存储Student对象, 通过泛型指定存储元素类型为Student
List<Student> list = new ArrayList<>();

//2) 向集合中添加元素
Student stu = new Student();
list.add(stu);
Student stu2 = new Student("lisi", 22, 98);
list.add(stu2);
list.add(new Student("wangwu", 26, 78));
list.add(new Student("zhaoliu", 23, 78.5));
list.add(new Student("chenqi", 27, 78.8));
list.add(new Student("zhangsan", 21, 86));
list.add(new Student("feifei", 26, 54));

//3)调用方法打印List集合
printInfo( list );

//4) 判断集合中是否包含指定的Student对象, list接口引用了ArrayList对象, 通过list调用contains()方法实际执行的是ArrayList对象的contains()方法, 这是接口多态. ArrayListcontains()源码中,判断两个元素是否一样调用了equals()方法, 当前ArrayList存储的Student对象, 需要在Student类中重写equals()方法
System.out.println( list.contains( stu ) ); //true
stu = new Student("zhangsan", 21, 86);
System.out.println( list.contains(stu)); //true

//5)list集合中成绩小于70分的同学都删除. 迭代删除
for (Iterator<Student> iterator = list.iterator(); iterator.hasNext(); ) {
Student student = iterator.next();
if ( student.getScore() < 70 ){
iterator.remove();
}
}
printInfo(list);

//6) 对集合中学生对象根据年龄升序排序
list.sort(new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
//o1的年龄大返回正数
return o1.getAge() - o2.getAge();
}
});
printInfo(list);

//7)对集合中的元素根据成绩降序排序
list.sort(new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
//o2的成绩大返回正数
return Double.compare(o2.getScore() , o1.getScore());
}
});
printInfo(list);

//8)根据姓名升序排序
list.add(new Student("陈飞", 18, 99));
list.add(new Student("张晓三", 18, 29));
list.add(new Student("李大四", 68, 79));
list.sort(new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
return o1.getName().compareTo(o2.getName());
//compareTo()方法比较的是字符的码值
}
});
printInfo(list);

//9) 根据姓名升序排序, 根据汉字顺序比较
//先获得一个汉字的比较器
Comparator cmp = Collator.getInstance(Locale.CHINESE);
list.sort(new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
return cmp.compare(o1.getName(), o2.getName());
}
});
printInfo(list);

}

private static void printInfo(List<Student> list) {
System.out.println("-------学生信息-----------");
for (Student student : list) {
System.out.println( student);
}
}
}

posted on 2020-04-15 15:14  十年磨三劍  阅读(198)  评论(0编辑  收藏  举报

导航