Comparable,Comparator接口的使用

1.Comparable接口位于java.lang包下,Comparator位于java.util包下html

 

2.这两个接口均可以用于对象数组的排序,若是一个类,定义的时候,就已经实现了Comparable接口,那么咱们就是用Comparable方法进行对象数组的排序,使用这种方法,实现类必须重写java

   int compareTo(T o)方法,在这个方法中,咱们定义本身的对象比较规则。而后利用Arrays类的public static void sort(Object[] a)方法对对象数组进行排序。api

3.若是一个类在定义的时候没有实现Comparable接口,在使用的过程当中须要对对象数组进行排序,咱们能够再定义一个类,实现Comparator接口,而后重写int compare(T o1,T o2)方法实现比较规则。数组

 而后用Arrays类的public static <T> void sort(T[] a,Comparator<? super T> c)方法进行比较。ide

 

Comparable法:

package com.comparable;

import java.util.Arrays;

class Cat implements Comparable<Cat>{
	private String name;
	private int age;
	public Cat() {
		// TODO Auto-generated constructor stub
	}
	public Cat(String name,int age) {
		this.name=name;
		this.age=age;
	}
	@Override
	public String toString() {
		return "姓名:"+this.name+",年龄:"+this.age;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getName() {
		return name;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public int getAge() {
		return age;
	}
	@Override
	public int compareTo(Cat o) {
		if(this.age<o.age)
		{
			return -1;
		}else if(this.age>o.age){
			return 1;
		}else{
			return 0;
		}
		
	}
	
}
public class TestComparable {

	public static void main(String[] args) {
		Cat[] cats=new Cat[]{
			new Cat("小白",1),
			new Cat("小花",4),
			new Cat("小黑",3),
		};
		Arrays.sort(cats);
		System.out.println(Arrays.toString(cats));
	}

}

  Comparator法:

package com.comparable;

import java.util.Arrays;
import java.util.Comparator;

class Cat1{
	private String name;
	private int age;
	public Cat1() {
		// TODO Auto-generated constructor stub
	}
	public Cat1(String name,int age) {
		this.name=name;
		this.age=age;
	}
	@Override
	public String toString() {
		return "姓名:"+this.name+",年龄:"+this.age;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getName() {
		return name;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public int getAge() {
		return age;
	}
	
}
class CatComparatorImpl implements Comparator<Cat1>{

	@Override
	public int compare(Cat1 o1, Cat1 o2) {
		if(o1.getAge()<o2.getAge())
		{
			return -1;
		}else if(o1.getAge()>o2.getAge()){
			return 1;
		}else{
			
			return 0;
		}
	}
	
}
public class TestComparator {

	public static void main(String[] args) {
		Cat1[] cats1=new Cat1[]{
				new Cat1("小白",1),
				new Cat1("小花",4),
				new Cat1("小黑",3),
			};
		CatComparatorImpl cci=new CatComparatorImpl();
		Arrays.sort(cats1, cci);
		System.out.println(Arrays.toString(cats1));
	}

}
相关文章
相关标签/搜索