2020-8-5 Java集合排序 练习

2020-8-5 Java集合排序 练习

一、选择

  1. 在下面代码中的(1)(2)处可以填写(多选) (BC)
    在这里插入图片描述
    A. int int
    B. Integer Integer
    C. String String
    D. string string
  2. 下列说法中不正确的是: (D)
    A. Comparator接口用于对自定义类进行整体排序
    B. Comparator接口可以将Comparator传递给sort方法
    C. int compare(T o1,T o2)比较用来排序的两个对象
    D. boolean equals(Object obj)指示对象obj是否是“等于”当前对象。此方法不可以被Object类中的equals方法覆盖
  3. 关于Comparable接口的说法,以下哪个是错误的? (D)
    A. Comparable位于java.lang包
    B. 调用sort方法时,需要指定Comparable接口的实现类
    C. Comparable接口的抽象方法是 int compareTo(T t)
    D. Comparable接口还可以用于数组的排序

二、编程

  1. 对英文单词进行排序,效果图如下:
    2020-8-5 Java集合排序 练习_第1张图片
    任务
    1、给list添加元素
    2、输出排序前list中的内容
    3、对list中的元素进行排序
    4、输出排序后list中的内容
package exercise;

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.add("orange");
        list.add("tomato");
        list.add("apple");
        list.add("litchi");
        list.add("banana");
        System.out.println("排序前:");
        for (String lis:list){
            System.out.print(lis + "    ");
        }
        Collections.sort(list);
        System.out.println("");
        System.out.println("排序后:");
        for (String lis:list){
            System.out.print(lis + "    ");
        }
    }
}

  1. 定义一个学生信息类,包括学号,姓名,年龄三个成员变量,然后按名字进行升序排序。(使用Comparator接口)
    运行效果图:
    2020-8-5 Java集合排序 练习_第2张图片
    任务:
    2020-8-5 Java集合排序 练习_第3张图片
package exercise;

public class Student {
    private int num;
    private int age;
    private String name;

    public int getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }

    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 num, int age, String name) {
        this.setAge(age);
        this.setName(name);
        this.setNum(num);
    }

    public Student() {
    }

    @Override
    public String toString() {
        return "Student{" +
                "num=" + num +
                ", age=" + age +
                ", name='" + name + '\'' +
                '}';
    }
}

package exercise;

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 stu1 = new Student(40,20,"peter");
        Student stu2 = new Student(28,5,"angel");
        Student stu3 = new Student(35,18,"tom");
        List<Student> stu = new ArrayList<>();
        stu.add(stu1);
        stu.add(stu2);
        stu.add(stu3);
        System.out.println("按名字排序前:");
        for (Student st:stu){
            System.out.println(st);
        }
        Collections.sort(stu, 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 st:stu){
            System.out.println(st);
        }
    }
}

  1. 定义一个员工信息类,包括编号,姓名,工资三个成员变量,要求工资定义为float类型,然后按工资进行降序排序。(使用Comparable接口)
    运行效果图:
    2020-8-5 Java集合排序 练习_第4张图片
    任务:
    2020-8-5 Java集合排序 练习_第5张图片
package exercise;

public class Employee {
    private String num;
    private String name;
    private double price;

    public String getNum() {
        return num;
    }

    public void setNum(String num) {
        this.num = num;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public Employee(String num, String name, double price) {
        this.setName(name);
        this.setNum(num);
        this.setPrice(price);
    }

    public Employee() {
    }

    @Override
    public String toString() {
        return "员工{" +
                "编号='" + num + '\'' +
                ", 姓名='" + name + '\'' +
                ", 工资=" + price +
                '}';
    }
}

package exercise;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class EmployeeTest {
    public static void main(String[] args) {
        Employee emp1 = new Employee("emp001","张三",1800);
        Employee emp2 = new Employee("emp002","李四",2500);
        Employee emp3 = new Employee("emp003","王五",1600);
        List<Employee> emp = new ArrayList<>();
        emp.add(emp1);
        emp.add(emp2);
        emp.add(emp3);
        System.out.println("排序前:");
        for (Employee em:emp){
            System.out.println(em);
        }
        Collections.sort(emp, new Comparator<Employee>() {
            @Override
            public int compare(Employee o1, Employee o2) {
                double price1 = o1.getPrice();
                double price2 = o2.getPrice();
                return (int)(price2 - price1);
            }
        });
        System.out.println("排序后:");
        for (Employee em:emp){
            System.out.println(em);
        }
    }
}

你可能感兴趣的:(练习,java)