Java集合排序 练习

选择

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);
		}
	}

}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值