比较比较器的工具

Mik*_*lov 4 java compare comparator

有时我必须使用多个字段来比较我的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();
    }
Run Code Online (Sandbox Code Playgroud)

不想写自行车:)

chr*_*ke- 8

你可能想要Apache Commons Lang CompareToBuilder.


Kon*_*ong 6

试试番石榴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();
Run Code Online (Sandbox Code Playgroud)


Stu*_*rks 6

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

Comparator.comparing(Pojo::isExternal)
          .thenComparing(Pojo::getName);
Run Code Online (Sandbox Code Playgroud)

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