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));
	}

}
相關文章
相關標籤/搜索