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接口的说法,以下哪个是错误的? B
    A. Comparable位于java.lang包
    B. 调用sort方法时,需要指定Comparable接口的实现类
    C. Comparable接口的抽象方法是 int compareTo(T t)
    D. Comparable接口还可以用于数组的排序
    二、编程
  4. 对英文单词进行排序,效果图如下:
    在这里插入图片描述
    任务
    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+" ");
		}
       
    }
}
  1. 定义一个学生信息类,包括学号,姓名,年龄三个成员变量,然后按名字进行升序排序。(使用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);
		}
	}

}
  1. 定义一个员工信息类,包括编号,姓名,工资三个成员变量,要求工资定义为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);
		}

	}

}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值