当对集合进行排序的时候需要正确实现compareTo方法
实现compareTo方法有一下2种途径:
- 让元素类(集合中的元素)实现
Comparable
接口 - 外带一个
Comparator
对象
比较规则
如果从小到大,那么左边的元素小于右边的元素,所以该情况下返回负数,即可实现小到大的排序,同理得,如果从大到小,那么左边的元素大于右边的元素,所以该情况下返回负数,即可实现大到小的排序。
compareTo方法的实现
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class mon {
public static void main(String[] args) {
List<String> list=new ArrayList<>();
list.add("苍老师");
list.add("小泽玛利亚老师");
list.add("波多老师");
Collections.sort(list, new c());
/*等效于
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.length()-o2.length();
}
});*/
}
}
class c implements Comparator<String>{
@Override
public int compare(String o1, String o2) {
return o1.length()-o2.length();
}
}
等效
class c implements Comparator<String>{
@Override
public int compare(String o1, String o2) {
if (o1.length()>o2.length())
return 1;
else if (o1.length()<o2.length())
return -1 ;
else
return 0;
}
}
分析
通过代码可以看出,该排序为小到大,因为当左边小于右边的时候返回负数,还有也应该在相应的情况下返回正数和0,返回0意味着两元素相同,返回正数在一些方法中也需要用到,如二分查找