选择
1、在下面代码中的(1)(2)处可以填写(多选) BC
2、下列说法中不正确的是: D
3、关于Comparable接口的说法,以下哪个是错误的? B
编程
1、对英文单词进行排序,效果图如下:
package project0731;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class StringSort {
public static void main(String[] args) {
// 给list添加元素
List<String> list = new ArrayList<String>();
list.add("orange");
list.add("tomato");
list.add("apple");
list.add("litchi");
list.add("banana");
// 输出排序前list中的内容
System.out.println("排序前:");
for(String s : list) {
System.out.print(s + " ");
}
// 对list中的元素进行排序
Collections.sort(list);
// 输出排序后list中的内容
System.out.println("\n排序后:");
for(String s : list) {
System.out.print(s + " ");
}
}
}
2、定义一个学生信息类,包括学号,姓名,年龄三个成员变量,然后按名字进行升序排序。(使用Comparator接口)
package project0731.demo2;
public class Student {
// 成员属性
private int id;
private String name;
private int age;
// get/set方法
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
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() {
super();
}
public Student(int id, String name, int age) {
super();
this.setId(id);
this.setName(name);
this.setAge(age);
}
// 重写toString方法
@Override
public String toString() {
return "[学号:" + this.getId() + ",年龄:" + this.getAge() + ",姓名:" + this.getName() + "]";
}
}
package project0731.demo2;
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) {
// 创建学生对象
Student s1 = new Student(40, "peter", 20);
Student s2 = new Student(28, "angel", 5);
Student s3 = new Student(35, "tom", 18);
// 创建列表并添加学生对象
List<Student> list = new ArrayList<Student>();
list.add(s1);
list.add(s2);
list.add(s3);
// 排序前打印输出
System.out.println("按名字排序前:");
for (Student s : list) {
System.out.println(s);
}
// 调用排序算法
Collections.sort(list, new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
String name1 = o1.getName();
String name2 = o2.getName();
return name1.compareTo(name2);
}
});
// 排序后打印输出
System.out.println("按名字排序后:");
for (Student s : list) {
System.out.println(s);
}
}
}
3、定义一个员工信息类,包括编号,姓名,工资三个成员变量,要求工资定义为float类型,然后按工资进行降序排序。(使用Comparable接口)
package project0731.demo3;
public class Employee implements Comparable<Employee> {
// 成员属性
private String id;
private String name;
private float salary;
// get/set方法
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 float getSalary() {
return salary;
}
public void setSalary(float salary) {
this.salary = salary;
}
// 构造方法
public Employee() {
super();
}
public Employee(String id, String name, float salary) {
super();
this.setId(id);
this.setName(name);
this.setSalary(salary);
}
// 重写toString方法
@Override
public String toString() {
return "员工[编号:" + getId() + ",姓名:" + getName() + ",工资:" + getSalary() + "]";
}
// 重写compareTo方法
@Override
public int compareTo(Employee o) {
float f1 = this.getSalary();
float f2 = o.getSalary();
int n = new Float(f2 - f1).intValue();
return n;
}
}
package project0731.demo3;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class EmployeeTest {
public static void main(String[] args) {
// 创建员工对象
Employee e1 = new Employee("emp001","张三",1800.0F);
Employee e2 = new Employee("emp002","李四",2500.0F);
Employee e3 = new Employee("emp003","王五",1600.0F);
// 创建列表并添加员工对象
List<Employee> list = new ArrayList<Employee>();
list.add(e1);
list.add(e2);
list.add(e3);
// 排序前打印输出
System.out.println("排序前:");
for(Employee e : list) {
System.out.println(e);
}
// 调用排序算法
Collections.sort(list);
// 排序后打印输出
System.out.println("排序后:");
for(Employee e : list) {
System.out.println(e);
}
}
}