按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); } } }