秒杀Java中的Comparator比较器

教你使用Java中的Comparator比较器

一、知识点简述:

自定义比较器:
  • Comparator:比较器
  • Comparator是一个接口,无法直接创建对象,需要实现类去创建
创建Comparator的步骤:
  • 1.定义一个比较器的类,去实现Comparator接口
  • 2.实现compare方法,在compare方法中自定义比较的规则

二、案例题目及要求:

步骤:

  • 1.创建Person类,包含属性:身份证号、姓名、年龄;
  • 2.创建四个对象,把四个对象存入到list集合;
  • 3.对四个对象分别根据年龄和身份证号进行单独排序;

三、代码实现:

1.创建Person类

public class Person {
	private String IdCard;
	private String name;
	private int age;
	//get set方法
	public String getIdCard() {
		return IdCard;
	}
	public void setIdCard(String idCard) {
		IdCard = idCard;
	}
	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 Person(String idCard, String name, int age) {
		super();
		IdCard = idCard;
		this.name = name;
		this.age = age;
	}
	//重写toString方法
	@Override
	public String toString() {
		return "Person [IdCard=" + IdCard + ", name=" + name + ", age=" + age + "]"+"\n";
	}
	//无参构造器
	public Person() {
		super();
	}

2.创建四个子类,分别继承Person类:

//学生类
	class Student extends Person{

	}
	//工人类
	class Worker extends Person{
		
	}
	//学者类
	class Scholar extends Person{
	}
	//小偷类
	class Thief extends Person{
	}

3.编写程序入口,分别创建以上四个类的对象,并赋值 :

//程序入口
	public static void main(String[] args) {
		//创建Student对象
		Person st = new Student();
		//赋值
		st.setName("火麟飞");
		st.setIdCard("621760388988");
		st.setAge(17);
		st.getName();
		st.getIdCard();
		st.getAge();
		//创建worker对象
		Person wk = new Worker();
		wk.setName("天羽");
		wk.setIdCard("821760388966");
		wk.setAge(21);
		wk.getName();
		wk.getIdCard();
		wk.getAge();
		//创建scholar对象
		Person sl = new Scholar();
		sl.setName("小胖墩");
		sl.setIdCard("421960386866");
		sl.setAge(18);
		wk.getName();
		wk.getIdCard();
		wk.getAge();
		//创建Thief对象
		Person tf = new Thief();
		tf.setName("夜凌云");
		tf.setIdCard("961860355899");
		tf.setAge(35);
		tf.getName();
		tf.getIdCard();
		tf.getAge();

4.创建List集合,将四个对象存进去:

//创建一个list集合
		ArrayList<Person> list = new ArrayList<Person>();
		//将四个对象存入到list集合
		list.add(st);
		list.add(wk);
		list.add(sl);
		list.add(tf);	
		System.out.println("排序前的结果为:\n"+list);
		System.out.println("==================================================");

5.自定义排序(根据年龄):

//根据年龄排序
		//创建比较器比较的对象
		ByAge ba = new ByAge();
		Collections.sort(list, ba);
		System.out.println("根据年龄排序后的结果为:\n"+list);
		System.out.println("==================================================");		

5.1 根据年龄排序的方法:

//根据年龄排序
	class ByAge implements Comparator<Person>{

		@Override
		public int compare(Person o1, Person o2) {
			
			return o1.getAge()-o2.getAge();
		}
		
	}

6.自定义根据身份证号排序:

//根据身份证号排序
		//创建比较器比较的对象
		ByIdCard bc = new ByIdCard();
		Collections.sort(list, bc);
		System.out.println("根据身份证号排序的结果为:\n"+list);

6.1 根据身份证号排序的方法:

//根据身份证号排序
	class ByIdCard implements Comparator<Person>{

	
		@Override
		public int compare(Person o1, Person o2) {
			
			return  o1.getIdCard().compareTo(o2.getIdCard());
		}
		
	}

四、运行效果图:

秒杀Java中的Comparator比较器_第1张图片
今日分享就到这儿了,喜欢的朋友们可以私信我哟!
秒杀Java中的Comparator比较器_第2张图片

你可能感兴趣的:(comparator,小系统,java)