版权声明:本文为「简简单单 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();
}
}