Guava 系列 - 比较器

版权声明:本文为「简简单单 Online zuozuo」原创文章,非商业用途欢迎转载,请保持署名,注明出处! Java 交流QQ 群:172083832 ,欢迎大家加入! https://blog.csdn.net/qq_15071263/article/details/85212807

Guava 系列 - 比较器


1、自我实现的比较器例子
class Person implements Comparable<Person> {
  private String lastName;
  private String firstName;
  private int zipCode;

  public int compareTo(Person other) {
    int cmp = lastName.compareTo(other.lastName);
    if (cmp != 0) {
      return cmp;
    }
    cmp = firstName.compareTo(other.firstName);
    if (cmp != 0) {
      return cmp;
    }
    return Integer.compare(zipCode, other.zipCode);
  }
}
2、使用guava比较器

上面的代码比较冗长,而且容易出错
guava 提供一个 ComparisonChain 类用于比较,只要找到一个非0结果,即不相同就立即停止比较,以获得更好的性能

// 我们只需要通过 ComparisonChain 构建的比较器进行简单的比较即可
public class Foo implements Comparable<Foo> {


    private String name;
    private String realName;
    private String code;


    @Override
    public int compareTo(Foo that) {

        return ComparisonChain.start()
                .compare(this.name, that.name)
                .compare(this.realName, that.realName)
                .compare(this.code, that.code)
                .result();
    }
}

猜你喜欢

转载自blog.csdn.net/qq_15071263/article/details/85212807
今日推荐