有时,我必须使用多个字段来比较POJO的列表,例如,首先是boolean isExternal()字段,然后是String getName()字段。
我想知道这样做是否有比较效用?
代码片段:
@Override
public int compare( CompanyProject o1, CompanyProject o2 ) {
return CompareBuilder.compareBoolean(o1.isExternal(), o2.isExternal()).compareString(o1.getName(), o2.getName()).getResult();
}不想写自行车:)
发布于 2013-12-11 08:27:29
您可能需要Apache CompareToBuilder。
发布于 2013-12-11 08:28:19
试试番石榴的ComparisonChain
public int compareTo(Foo that) {
return ComparisonChain.start()
.compare(this.aString, that.aString)
.compare(this.anInt, that.anInt)
.compare(this.anEnum, that.anEnum, Ordering.natural().nullsLast())
.result();发布于 2013-12-11 08:36:23
Java 8具有一些允许构建和链接比较器的功能:
Comparator.comparing(Pojo::isExternal)
.thenComparing(Pojo::getName);http://download.java.net/jdk8/docs/api/java/util/Comparator.html
https://stackoverflow.com/questions/20514025
复制相似问题