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