作业(集合排序)

一、选择

  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<String> li=new ArrayList<String>();
	li.add("orange");
	li.add("tomato");
	li.add("apple");
	li.add("litchi");
	li.add("banana");
	Iterator<String> it=li.iterator();
	System.out.println("排序前:");
	while(it.hasNext()){
		System.out.print(it.next()+"  ");
	}
	System.out.println();
	Collections.sort(li);
	Iterator<String> is=li.iterator();
	System.out.println("排序后:");
	while(is.hasNext()){
		System.out.print(is.next()+"  ");
		}
	}
}
  1. 定义一个学生信息类,包括学号,姓名,年龄三个成员变量,然后按名字进行升序排序。(使用Comparator接口)
    运行效果图:

    任务:
    import java.util.Comparator;
    
    public class StudentTest implements 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;
    	}
    
    }
    
    public class Student {
    	private int stuld;
    	private String name;
    	private int age;
    	public int getStuld() {
    		return stuld;
    	}
    	public void setStuld(int stuld) {
    		this.stuld = stuld;
    	}
    	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(){
    		
    	}
        public Student(int stuld,String name,int age){
    		this.stuld=stuld;
    		this.name=name;
    		this.age=age;
    	}
    	@Override
    	public String toString() {
    		return "[学号:" + stuld + ",姓名:" + name + ",年龄:" + age + "]";
    	}
    public class Text {
    	public static void main(String[] args) {
    		List<Student> li=new ArrayList<>();
    		Student one=new Student(40,"peter",20);
    		Student two=new Student(28,"angel",5);
    		Student three=new Student(35,"tom",18);
    		li.add(one);
    		li.add(two);
    		li.add(three);
    		System.out.println("按名字排序前:");
    		Iterator<Student> it=li.iterator();
    		while(it.hasNext()){
    			System.out.println(it.next());
    		}
    		System.out.println("学号排序后:");
    		Collections.sort(li, new StudentTest());
    		Iterator<Student> is=li.iterator();
    		while(is.hasNext()){
    			System.out.println(is.next());
    		}
    		
    		
    		
    	}
     
    }

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

    任务:
    public class Employee implements Comparable<Employee>{
    	private int id;
    	private String name;
    	private double salary;
    	
    	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 double getSalary() {
    		return salary;
    	}
    	public void setSalary(double salary) {
    		this.salary = salary;
    	}
    	
        public Employee(){
    		
    	}
        public Employee(int id,String name,double salary){
        	setId(id);
        	setName(name);
        	setSalary(salary);
    	}
    	@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;
    	}
        
    }
    
    public class Text {
    	public static void main(String[] args) {
    		List<Employee> li=new ArrayList<Employee>();
    		Employee one=new Employee(001,"张三",1800);
    		Employee two=new Employee(002,"李四",2500);
    		Employee three=new Employee(003,"王五",1600);
    		li.add(one);
    		li.add(two);
    		li.add(three);
    		System.out.println("排序前:");
    		Iterator<Employee> it=li.iterator();
    		while(it.hasNext()){
    			System.out.println(it.next());
    		}
    		Collections.sort(li);
    		System.out.println("排序后");
    		Iterator<Employee> is=li.iterator();
    		while(is.hasNext()){
    			System.out.println(is.next());
    		}
    		
    		
    	}
     
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值