Comparable与Comparator的区别

Comparable & Comparator 都是用来实现集合中元素的比较、排序的

Comparable 是在集合内部实现接口

Comparator 是在集合外部实现的接口 

Comparator位于包java.util下,而Comparable位于包   java.lang下

Comparable 是一个对象本身就已经支持自比较所需要实现的接口(如 String、Integer 自己就可以完成比较大小操作,已经实现了Comparable接口)  


如下:在Collections的sort方法中 传入 比较器 Comparator,来实现  集合排序

如果 没有传入比较器,则默认采用 Comparable 实现排序。

public class ComparatorTest {
	
	public static void main(String[] args) {
		List<Integer> list = new ArrayList<Integer>();
		list.add(1);
		list.add(3);
		list.add(2);
		Collections.sort(list , new Comparator<Integer>() {
			public int compare(Integer o1, Integer o2) {
				if(o1.compareTo(o2)>0){
					return -1;
				}else if(o1.compareTo(o2)<0){
					return 1;
				}else{
					return 0;
				}
			}
		});
		System.out.println(list);
	}
}


如下:类通过 继承 Comparable接口 实现 compareTo方法,实现两个对象的比较‘排序’

class Student implements Comparable<Student>{
	private int age;
	private String name;
	
	public int compareTo(Student o) {
		return 0;
	}
	//get set 
	//....
}



你可能感兴趣的:(Comparable与Comparator的区别)