一、选择
- 在下面代码中的(1)(2)处可以填写(多选)(BC)
A. int int B. Integer Integer C. String String D. string string
- 下列说法中不正确的是:(D)
A. Comparator接口用于对自定义类进行整体排序 B. Comparator接口可以将Comparator传递给sort方法 C. int compare(T o1,T o2)比较用来排序的两个对象 D. boolean equals(Object obj)指示对象obj是否是“等于”当前对象。此方法不可以被Object类中的equals方法覆盖
- 关于Comparable接口的说法,以下哪个是错误的?(D)
A. Comparable位于java.lang包 B. 调用sort方法时,需要指定Comparable接口的实现类 C. Comparable接口的抽象方法是 int compareTo(T t) D. Comparable接口还可以用于数组的排序
二、编程
- 对英文单词进行排序,效果图如下:
任务
1、给list添加元素
2、输出排序前list中的内容
3、对list中的元素进行排序
4、输出排序后list中的内容
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class StringSort {
public static void main(String[] args) {
List<String> list=new ArrayList<>();
//给list添加元素
list.add("orange");
list.add("tomato");
list.add("apple");
list.add("litchi");
list.add("banana");
//输出排序前list中的内容
System.out.println("排序前"+list);
//对list中的元素进行排序
Collections.sort(list);
//输出排序后list中的内容
System.out.println("排序后"+list);
}
}
- 定义一个学生信息类,包括学号,姓名,年龄三个成员变量,然后按名字进行升序排序。(使用Comparator接口)
运行效果图:
任务:public class Student { //定义三个成员变量 private int stuId;//学号 private String stuName;//姓名 private int stuAge;//年龄 public Student(int stuId,int stuAge,String stuName){ this.stuId=stuId; this.stuAge=stuAge; this.stuName=stuName; } public Student(){ } //get/set方法 public int getStuId() { return stuId; } public void setStuId(int stuId) { this.stuId = stuId; } public String getStuName() { return stuName; } public void setStuName(String stuName) { this.stuName = stuName; } public int getStuAge() { return stuAge; } public void setStuAge(int stuAge) { this.stuAge = stuAge; } @Override public String toString() { return "学号:" + stuId + " 年龄:" + stuAge + " 姓名:" + stuName + "\n"; } }
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; /** * 实现Comparator接口 */ public class StudentTest implements Comparator<Student> { public static void main(String[] args) { //定义Student类的对象 Student one=new Student(40,20,"peter"); Student two=new Student(28,5,"angel"); Student three=new Student(35,18,"tom"); //将Student类的对象添加到列表中 List<Student> list=new ArrayList<>(); list.add(one); list.add(two); list.add(three); //输出排序前的内容 System.out.println("按名字排序前:"); System.out.println(list); //输出升序排序后的内容 System.out.println("按名字排序后:"); Collections.sort(list,(o1,o2)->{ String name1=o1.getStuName(); String name2=o2.getStuName(); int n=name1.compareTo(name2); return n; }); System.out.println(list); } @Override public int compare(Student o1, Student o2) { String name1=o1.getStuName(); String name2=o2.getStuName(); int n=name1.compareTo(name2); return n; } }
- 定义一个员工信息类,包括编号,姓名,工资三个成员变量,要求工资定义为float类型,然后按工资进行降序排序。(使用Comparable接口)
运行效果图:
任务: -
/** * 实现Comparable接口 * @author Administrator * */ public class Employee implements Comparable<Employee>{ //定义成员变量 private String emId;//编号 private String emName;//姓名 private float emSalary;//工资 public Employee(String emId,String emName,float emSalary){ this.emId=emId; this.emName=emName; this.emSalary=emSalary; } public String getEmId() { return emId; } public void setEmId(String emId) { this.emId = emId; } public String getEmName() { return emName; } public void setEmName(String emName) { this.emName = emName; } public float getEmSalary() { return emSalary; } public void setEmSalary(float emSalary) { this.emSalary = emSalary; } @Override public String toString() { return "员工 [编号:" + emId + ", 姓名:" + emName + ", 工资" + emSalary + "]\n"; } @Override public int compareTo(Employee o) { float salary1=this.getEmSalary(); double salary2=o.getEmSalary(); int n=new Double(salary2-salary1).intValue(); return n; } }
import java.util.ArrayList; import java.util.Collections; import java.util.List; public class EmployeeTest { public static void main(String[] args) { //定义Employee类的对象 Employee one=new Employee("emp001","张三",1800.0f); Employee two=new Employee("emp002","李四",2500.0f); Employee three=new Employee("emp003","王五",1600.0f); //将三个对象添加到列表中 List<Employee> list=new ArrayList<>(); list.add(one); list.add(two); list.add(three); //输出排序前的内容 System.out.println("排序前"); System.out.println(list); //输出排序后的内容 Collections.sort(list); System.out.println("排序后"); System.out.println(list); } }