package com.sl;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Test {
/**
* 关注下 Arrays.sort() 方法实现
* @param names
*/
private void sortUsingjava7(List names){
//1.Collections 比较器 Comparator
Collections.sort(names, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.compareTo(o2);
}
});
//2.默认从小到大排序
Collections.sort(names);
//3.list比较器
names.sort(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.compareTo(o2);
}
});
}
private void sortUsingjava8(List<String> names){
//java 8
Collections.sort(names,(s1,s2) -> s1.compareTo(s2));
}
public static void main(String[] args) {
String str1 = "1111";
String str2 = "1";
System.out.println(str1.compareTo(str2));
str2 = "2";
System.out.println(str1.compareTo(str2));
str1 = null;
System.out.println(str1.compareTo(str2));
Integer inta = 1111;
Integer intb = 1;
System.out.println(inta.compareTo(intb));
List<String> names1 = new ArrayList<>();
names1.add("Google ");
names1.add("Runoob ");
names1.add("Taobao ");
names1.add("Baidu ");
names1.add("Sina ");
List<String> names2 = new ArrayList<>();
names2.add("Google ");
names2.add("Runoob ");
names2.add("Taobao ");
names2.add("Baidu ");
names2.add("Sina ");
Test test = new Test();
test.sortUsingjava7(names1);
System.out.println(names1);
names2 = null;
test.sortUsingjava8(names2);
System.out.println(names2);
}
}
我看了部分compareTo的源码,但是有一些小困惑
在while里面为什么要这么设计呢?为什么是从后往前便利返回结果呢?