comparable和comparator区别

comparable若一个类实现了该接口,该类便支持排序

而comparator是比较器,该类实现该接口,就相当于建立了一个比较器。

package com.lwx.lambda;

import java.util.Arrays;

public class PersonComparable implements Comparable<PersonComparable>{
	private String name;
	private Integer age;
	
	private PersonComparable(String name, Integer age) {
		super();
		this.name = name;
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	@Override
	public int compareTo(PersonComparable o) {
		return o.age-this.age;
	}
	
	public static void main(String[] args) {
		PersonComparable[] ps = new PersonComparable[]{new PersonComparable("xiaoming",10), new PersonComparable("xiaohong",12),new PersonComparable("xiaohua",14)};
		Arrays.sort(ps);
		for(PersonComparable p : ps){
			System.out.println(p.getName()+":"+p.getAge());
		}
	}
	
}
package com.lwx.lambda;

import java.util.Comparator;

public class PersonComparator implements Comparator<Person>{

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

}
package com.lwx.lambda;

import java.util.Arrays;

public class Person{
	private String name;
	private Integer age;
	
	private Person(String name, Integer age) {
		super();
		this.name = name;
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	
	public static void main(String[] args) {
		Person[] ps = new Person[]{new Person("xiaoming",10), new Person("xiaohong",12),new Person("xiaohua",14)};
		Arrays.sort(ps, new PersonComparator());
		for(Person p : ps){
			System.out.println(p.getName()+":"+p.getAge());
		}
	}
	
}




猜你喜欢

转载自blog.csdn.net/liwenxia626/article/details/80712769
今日推荐