0
点赞
收藏
分享

微信扫一扫

Comparator<T>和Comparable<T>


Comparator

作用

​Comparator<T>​​接口用于构造一个排序规则用于排序

package test.package13;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class Test {
public static void main(String[] args) {
TestEnums t = new TestEnums();
t.test();
}

@SuppressWarnings("all")
public void test() {
List<A> arraylist = new ArrayList<A>();
arraylist.add(new A(2));
arraylist.add(new A(3));
arraylist.add(new A(4));
arraylist.add(new A(1));
arraylist.add(new A(5));

Comparator c = new Comparator<A>() {
//compareTo方法返回正数即代表会把两个数交换位置,也就是会把this和o在数组中的顺序交换,所以下面方法即是把大的和小的顺序交换,既把大的放在小的后面,既正序排序。
@Override
public int compare(A o1, A o2) {
if (o1.getI() > o2.getI()) {
return 1;
} else {
return -1;
}
}
};

Collections.sort(arraylist, c);

for (int o = 0; o < arraylist.size(); o++) {
System.out.println(arraylist.get(o).getI());
}
}
}
//输出
1
2
3
4
5

Comparable

作用

class A实现了Comparable接口之后即需实现compareTo(T t)方法,该方法在我们调用​​Collections.sort(List<A>)​​方法时会调用用以将list内部元素根据我们在compareTo(T t)自定义的规则进行排序。

package test.package13;

public class A implements Comparable<A>{
private int i;
public int getI() {
return i;
}
public void setI(int i) {
this.i = i;
}

A(int i){
this.i=i;
}

//compareTo方法返回正数即代表会把两个数交换位置,也就是会把this和o在数组中的顺序交换,所以下面方法即是把大的和小的顺序交换,既把大的放在小的后面,既正序排序。
@Override
public int compareTo(A o) {
if(this.i>o.i){
return 1;
}else{
return -1;
}
}
}

package test.package13;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class TestEnums {
public static void main(String[] args) {
TestEnums t = new TestEnums();
t.test();
}
@SuppressWarnings("all")
public void test() {
List<A> arraylist = new ArrayList<A>();
arraylist.add(new A(2));
arraylist.add(new A(3));
arraylist.add(new A(4));
arraylist.add(new A(1));
arraylist.add(new A(5));

Collections.sort(arraylist);
for (int o = 0; o < arraylist.size(); o++) {
System.out.println(arraylist.get(o).getI());
}
}
}
//输出
1
2
3
4
5

区别与联系

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

Comparable是在集合内部定义的方法实现的排序,位于java.lang下。

Comparator是在集合外部实现的排序,位于java.util下。



举报

相关推荐

0 条评论