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接口的说法,以下哪个是错误的?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中的内容
package com.dodoke.opp;

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 i:list){
    		System.out.print(i + "    ");
    	}

       //对list中的元素进行排序
    	Collections.sort(list);
    	
       //输出排序后list中的内容
       System.out.println("\n排序后:");
       for(String i:list){
    	   System.out.print(i + "     ");
       }
	}
}
  1. 定义一个学生信息类,包括学号,姓名,年龄三个成员变量,然后按名字进行升序排序。(使用Comparator接口)
    运行效果图:

    任务:
    package com.dodoke.opp1;
    
    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> list = new ArrayList<Student>();
    		Student stu1 = new Student(40,20,"perter");
    		Student stu2 = new Student(28,5,"angel");
    		Student stu3 = new Student(35,18,"tom");
    		list.add(stu1);
    		list.add(stu2);
    		list.add(stu3);
    		 //输出排序前list中的内容
        	System.out.println("排序前:");
        	for(Student i:list){
        		System.out.println(i);
        	}
    
           //输出排序后list中的内容
            System.out.println("排序后(name):");
            //sort创建匿名
            Collections.sort(list, new Comparator<Student>() {
                @Override//compare(Cat o1, Cat o2)
                public int compare(Student s1, Student s2) {
                    // 按name升序排序
                	String name1=s1.getName();
            		String name2=s2.getName();
            		int n=name1.compareTo(name2);
                   return n;
                }
            });
            for (Student i : list){
                System.out.println(i);
    
            }
    	}
    }
    

     

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

    任务:
    package com.dodoke.opp1;
    
    public class Employee {
    	private String id;
    	private String name;
    	private float money;
    	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 getMoney() {
    		return money;
    	}
    	public void setMoney(float money) {
    		this.money = money;
    	}
    	public Employee() {
    		super();
    	}
    	public Employee(String id, String name, float money) {
    		super();
    		this.id = id;
    		this.name = name;
    		this.money = money;
    	}
    	@Override
    	public String toString() {
    		return "员工[编号:" + id + ",姓名:" + name + ",工资:" + money + "]";
    	}
    	
    }
    
    package com.dodoke.opp1;
    
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
     
    public class EmployeeTest {
        public static void main(String[] args) {
            //定义三个Employee类的对象,并添加到列表
            Employee emp1 = new  Employee("emp001","张三",1800.0f);
            Employee emp2 = new Employee("emp002","李四",2500.0f);
            Employee emp3 = new Employee("emp003","王五",1600.0f);
            List<Employee> list = new ArrayList<Employee>();
            list.add(emp1);
            list.add(emp2);
            list.add(emp3);
            System.out.println("排序前:");
            for (Employee emp : list){
                System.out.println(emp);
            }
            Collections.sort(list,new Comparator<Employee>(){
            	@Override
            	public int compare(Employee s1 , Employee s2 ){
            		float my1 = s1.getMoney();
            		float my2 = s2.getMoney();
            		return my2 - my1;
            	}
            });
            System.out.println("排序后:");
            for (Employee emp : list){
                System.out.println(emp);
            }
        }
    }
    

     

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值