首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较器的比较用途

比较器的比较用途
EN

Stack Overflow用户
提问于 2013-12-11 08:24:45
回答 3查看 4.3K关注 0票数 4

有时,我必须使用多个字段来比较POJO的列表,例如,首先是boolean isExternal()字段,然后是String getName()字段。

我想知道这样做是否有比较效用?

代码片段:

代码语言:javascript
复制
    @Override
    public int compare( CompanyProject o1, CompanyProject o2 ) {
        return CompareBuilder.compareBoolean(o1.isExternal(), o2.isExternal()).compareString(o1.getName(), o2.getName()).getResult();
    }

不想写自行车:)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-12-11 08:27:29

您可能需要Apache CompareToBuilder

票数 8
EN

Stack Overflow用户

发布于 2013-12-11 08:28:19

试试番石榴的ComparisonChain

代码语言:javascript
复制
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();
票数 6
EN

Stack Overflow用户

发布于 2013-12-11 08:36:23

Java 8具有一些允许构建和链接比较器的功能:

代码语言:javascript
复制
Comparator.comparing(Pojo::isExternal)
          .thenComparing(Pojo::getName);

http://download.java.net/jdk8/docs/api/java/util/Comparator.html

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20514025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档