Java基础之对象比较器

Test

package com.vince;

import java.util.Arrays;

public class Test {

	public static void main(String[] args) {

		
		int[] nums = {34,54,22,3,5,6,7,87,9};
		Arrays.sort(nums);
		System.out.println(Arrays.toString(nums));
		
		String[] names = {"jack","tom","菲菲","粪粪"};
		Arrays.sort(names);
		System.out.println(Arrays.toString(names));
		
		Cat[] cats = {new Cat("愤愤",1),new Cat("菲菲",4),new Cat("Tom",2)};
		Arrays.sort(cats);
		System.out.println(Arrays.toString(cats));
		
		Dog[] dogs = {new Dog("愤愤",1),new Dog("菲菲",4),new Dog("Tom",2)};
		Arrays.sort(dogs,new DogComparator());//注意这 要告诉排序的 我使用这个类
		System.out.println(Arrays.toString(dogs));
	}

}

Cat 使用com

package com.vince;

/**
 * 自定义对象,要实现比较排序
 * 1、可以实现Comparable的comparaTo方法
 * @author vince
 * @description
 */
public class Cat implements Comparable<Cat>{
	private String name;
	private int age;
	
	
	public Cat() {
		super();
	}
	public Cat(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}
	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;
	}
	@Override
	public String toString() {
		return "Cat [name=" + name + ", age=" + age + "]";
	}
	@Override
	public int compareTo(Cat o) {
//		if(this.age<o.age)return -1;
//		if(this.age>o.age)return 1;
//		return 0;
		return this.age-o.age;
	}
	
	
}

Dog 使用

package com.vince;

public class Dog {
	private String name;
	private int age;
	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;
	}
	@Override
	public String toString() {
		return "Dog [name=" + name + ", age=" + age + "]";
	}
	public Dog(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}
	public Dog() {
		super();
	}
	
}

根据oo原则 对修改关闭 对扩展开放
当Dog类写好后 不想跟Cat类一样改 所以另外写一个类
实现Comparator接口

package com.vince;

import java.util.Comparator;

public class DogComparator implements Comparator<Dog>{

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

}

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/C_time/article/details/89366283