按guava官方教程寫的ordering,注意的是com.google.common.base.Function用這個Function,不能用其他庫的Function
import java.util.*;
import com.google.common.base.Function;
import org.elasticsearch.common.Nullable;
import com.google.common.collect.Ordering;
class Foo{
@Nullable String sortedBy;
int notSortedBy;
public Foo(String p1, int p2) {
sortedBy = p1;
notSortedBy = p2;
}
}
public class test {
public static void main(String[] args) {
Function<Foo, String> t = new Function<Foo, String>() {
@Override
public String apply(Foo foo) {
return foo.sortedBy;
}
};
Ordering<Foo> ordering = Ordering.natural().nullsFirst().onResultOf(t);
List<Foo> foos = new ArrayList<>(3);
foos.add(new Foo("h1", 1));
foos.add(new Foo("h3", 3));
foos.add(new Foo("h2", 2));
for(Foo a : ordering.sortedCopy(foos)) {
System.out.println(a.sortedBy + a.notSortedBy);
}
}
}