作业(集合排序)

一、选择

  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. 对英文单词进行排序,效果图如下:

    任务
    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<>();

		//给list添加元素
		list.add("orange");
		list.add("tomato");
		list.add("apple");
		list.add("litchi");
		list.add("banana");
		
		//输出排序前list中的内容
		System.out.println("排序前"+list);
		
		//对list中的元素进行排序
		Collections.sort(list);
		
		//输出排序后list中的内容
		System.out.println("排序后"+list);

	}

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

    任务:
    public class Student {
    	
    	//定义三个成员变量
        private int stuId;//学号
        private String stuName;//姓名
        private int stuAge;//年龄
        
        public Student(int stuId,int stuAge,String stuName){
        	this.stuId=stuId;
        	this.stuAge=stuAge;
        	this.stuName=stuName;
        }
        
        public Student(){
        	
        }
        
        //get/set方法
    	public int getStuId() {
    		return stuId;
    	}
    
    	public void setStuId(int stuId) {
    		this.stuId = stuId;
    	}
    
    	public String getStuName() {
    		return stuName;
    	}
    
    	public void setStuName(String stuName) {
    		this.stuName = stuName;
    	}
    
    	public int getStuAge() {
    		return stuAge;
    	}
    
    	public void setStuAge(int stuAge) {
    		this.stuAge = stuAge;
    	}
    
    	@Override
    	public String toString() {
    		return "学号:" + stuId + " 年龄:" + stuAge + " 姓名:" + stuName + "\n";
    	}
    	
    }
    
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.List;
    
    /**
     * 实现Comparator接口
     */
    public class StudentTest implements Comparator<Student> {
    
    	public static void main(String[] args) {
    	//定义Student类的对象
            Student one=new Student(40,20,"peter");
            Student two=new Student(28,5,"angel");
            Student three=new Student(35,18,"tom");
            
            //将Student类的对象添加到列表中
            List<Student> list=new ArrayList<>();
            list.add(one);
            list.add(two);
            list.add(three);
            
            //输出排序前的内容
            System.out.println("按名字排序前:");
            System.out.println(list);
            
            //输出升序排序后的内容
            System.out.println("按名字排序后:");
            Collections.sort(list,(o1,o2)->{
                String name1=o1.getStuName();
        	    String name2=o2.getStuName();
        	    int n=name1.compareTo(name2);
        	    return n;
            });
            System.out.println(list);
    	}
    
    	@Override
    	public int compare(Student o1, Student o2) {
    	    String name1=o1.getStuName();
    	    String name2=o2.getStuName();
    	    int n=name1.compareTo(name2);
    	    return n;
    	}
    
    }
    

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

    任务:
  3. /**
     * 实现Comparable接口
     * @author Administrator
     *
     */
    public class Employee implements Comparable<Employee>{
        //定义成员变量
    	private String emId;//编号
    	private String emName;//姓名
    	private float emSalary;//工资
    	
    	public Employee(String emId,String emName,float emSalary){
    		this.emId=emId;
    		this.emName=emName;
    		this.emSalary=emSalary;
    	}
    	
    	
    	public String getEmId() {
    		return emId;
    	}
    
    	public void setEmId(String emId) {
    		this.emId = emId;
    	}
    
    	public String getEmName() {
    		return emName;
    	}
    
    	public void setEmName(String emName) {
    		this.emName = emName;
    	}
    
    	public float getEmSalary() {
    		return emSalary;
    	}
    
    	public void setEmSalary(float emSalary) {
    		this.emSalary = emSalary;
    	}
    
    
    	@Override
    	public String toString() {
    		return "员工 [编号:" + emId + ", 姓名:" + emName + ", 工资" + emSalary + "]\n";
    	}
    
    	@Override
    	public int compareTo(Employee o) {
    		float salary1=this.getEmSalary();
    		double salary2=o.getEmSalary();
    		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) {
    		//定义Employee类的对象
    		Employee one=new Employee("emp001","张三",1800.0f);
    		Employee two=new Employee("emp002","李四",2500.0f);
    		Employee three=new Employee("emp003","王五",1600.0f);
            
    		//将三个对象添加到列表中
    		List<Employee> list=new ArrayList<>();
    		list.add(one);
    		list.add(two);
    		list.add(three);
    		
    		//输出排序前的内容
    		System.out.println("排序前");
    		System.out.println(list);
    		
    		//输出排序后的内容
    		Collections.sort(list);
    		System.out.println("排序后");
    		System.out.println(list);
    	}
    
    }
    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值