一、选择
- 在下面代码中的(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接口的说法,以下哪个是错误的? B
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<String>();
list.add("orange");
list.add("tomato");
list.add("apple");
list.add("litchi");
list.add("banana");
System.out.println("排序前");
for(String n:list){
System.out.print(n+" ");
}
System.out.println("排序后");
Collections.sort(list);
for(String n:list){
System.out.print(n+" ");
}
}
}
- 定义一个学生信息类,包括学号,姓名,年龄三个成员变量,然后按名字进行升序排序。(使用Comparator接口)
运行效果图:
任务:
/**
*学生类
*/
public class Student {
private int stid;
private String name;
private int age;
public int getStid() {
return stid;
}
public void setStid(int stid) {
this.stid = stid;
}
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;
}
public Student(int stid, String name, int age) {
super();
this.stid = stid;
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "[学号:" + stid + ", 年龄" + age + ", 名字:" + name + "]";
}
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class StudentTest {
public static void main(String[] args) {
List<Student> stList=new ArrayList<Student>();
//添加
stList.add(new Student(40,"peter",21));
stList.add(new Student(26,"angel",15));
stList.add(new Student(24,"tom",26));
System.out.println("按名字排序前:");
for(Student st:stList){
System.out.println(st);
}
//匿名内部类
Collections.sort(stList, new Comparator<Student>(){
@Override
public int compare(Student o1, Student o2) {
String name1=o1.getName();
String name2=o2.getName();
int n=name1.compareTo(name2);
return n;
}
});
System.out.println("按名字升序排序后:");
for(Student st:stList){
System.out.println(st);
}
}
}
- 定义一个员工信息类,包括编号,姓名,工资三个成员变量,要求工资定义为float类型,然后按工资进行降序排序。(使用Comparable接口)
运行效果图:
任务:
/**
*员工类
*/
public class Employee implements Comparable<Employee> {
private String id;
private String name;
private double salary;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
public Employee(String id, String name, double salary) {
super();
this.id = id;
this.name = name;
this.salary = salary;
}
public Employee() {
super();
}
@Override
public String toString() {
return "员工 [编号:" + id + ", 姓名:" + name + ", 工资:" + salary + "]";
}
@Override
public int compareTo(Employee o) {
double salary1=this.getSalary();
double salary2=o.getSalary();
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) {
List<Employee> emList=new ArrayList<Employee>();
emList.add(new Employee("emp001","张三",1800f));
emList.add(new Employee("emp002","李四",1600f));
emList.add(new Employee("emp003","王五",2100f));
System.out.println("排序前:");
for(Employee em:emList){
System.out.println(em);
}
Collections.sort(emList);
System.out.println("排序后:");
for(Employee em:emList){
System.out.println(em);
}
}
}