20200731Java集合排序练习

一、选择

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接口还可以用于数组的排序

二、编程

1.对英文单词进行排序,效果图如下:
在这里插入图片描述
任务
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添加元素
    	List<String> list = new ArrayList<>();
    	list.add("orange");
    	list.add("tomato");
    	list.add("apple");
    	list.add("litchi");
    	list.add("banana");
    	//输出排序前list中的内容
    	System.out.println("排序前:");
    	for (String str : list) {
    		System.out.print(str + "    ");
    	}
    	System.out.println();
    	//对list中的元素进行排序
    	Collections.sort(list);
    	//输出排序后list中的内容
    	System.out.println("排序后:");
    	for (String str : list) {
    		System.out.print(str + "    ");
    	}
    	System.out.println();
	}
}

2.定义一个学生信息类,包括学号,姓名,年龄三个成员变量,然后按名字进行升序排序。(使用Comparator接口)
运行效果图:
在这里插入图片描述

任务:
在这里插入图片描述

public class Student {
	//成员变量
	private int id;
	private String name;
	private int age;
	
	//构造器
	public Student() {
		super();
	}
	public Student(int id, String name, int age) {
		super();
		this.setId(id);
		this.setName(name);
		this.setAge(age);
	}
	
	//getters&setters
	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;
	}
	
	//重写toString
	@Override
	public String toString() {
		return "[学号:" + getId() + ", 年龄:" + getAge() + ", 姓名:" + getName() + "]";
	}
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class Test implements Comparator<Student>{
	@Override
	public int compare(Student s1, Student s2) {
		//姓名升序
		String name1 = s1.getName();
		String name2 = s2.getName();
		int n = name1.compareTo(name2);
		return n;
	}
	
    public static void main(String[] args) {
		List<Student> list = new ArrayList<>();
		list.add(new Student(40, "peter", 20));
		list.add(new Student(28, "angel", 5));
		list.add(new Student(35, "tom", 18));
		System.out.println("按名字排序前:");
		for (Student s : list) {
			System.out.println(s);
		}
		Collections.sort(list, new Test());
		System.out.println("按名字排序后:");
		for (Student s : list) {
			System.out.println(s);
		}
	}
}

3.定义一个员工信息类,包括编号,姓名,工资三个成员变量,要求工资定义为float类型,然后按工资进行降序排序。(使用Comparable接口)
运行效果图:
在这里插入图片描述
任务:
在这里插入图片描述

public class Employee implements Comparable<Employee>{
	//成员变量
	private String id;
	private String name;
	private float salary;
	
	//构造器
	public Employee() {
		super();
	}
	public Employee(String id, String name, float salary) {
		super();
		this.setId(id);
		this.setName(name);
		this.setSalary(salary);
	}
	
	//getters&setters
	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;
	}
	
	//重写toString
	@Override
	public String toString() {
		return "员工 [编号:" + getId() + ", 姓名:" + getName() + ", 工资:" + getSalary() + "]";
	}
	
	@Override
	public int compareTo(Employee e) {
		//工资降序
		float s1 = this.getSalary();
		float s2 = e.getSalary();
		int n = new Float(s2-s1).intValue();
		return n;
	}
}

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

public class Test {
	public static void main(String[] args) {
		List<Employee> list = new ArrayList<>();
		list.add(new Employee("emp001", "张三", 1800.0F));
		list.add(new Employee("emp002", "李四", 2500.0F));
		list.add(new Employee("emp003", "王五", 1600.0F));
		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);
		}
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值