Java中的Comparable接口和Comparator接口

Comparator位于包java.util下,比较器,是在集合外部定义排序。
Comparable位于包java.lang下,代表当前对象可比较的,是在集合内部实现排序。

Comparable代表一个对象内部支持排序(比如String类,Integer类,内部实现了Comparable接口) Collections.sort(list<T>)中,T必须实现Comparable接口。

Comparable只需实现compareTo()函数即可

	public int compareTo(Object arg0) {
		// TODO Auto-generated method stub
		return 0;
	}

 

而 Comparator 代表着一种策略模式(strategy design pattern),就是不改变对象自身,而用一个策略对象(strategy object)来改变它的行为。比如对List<Integer>按照绝对值排序。Collections.sort(list<T>,comparator)。

		Collections.sort(list, new Comparator<Node2>() {
			public int compare(Node2 o1, Node2 o2) {
				return 0;
			}
			//equals用于判断两个比较器是否相等,由于Object类有默认equals,因此可以不写equals
			public boolean equals(Object o) {
				return false;
			}
		});

 因此可以看到,Comparator接口更加灵活!