Java Comparator

8 java comparison

有没有人知道Java中的某种Comparator工厂,有一个

public Comparator getComparatorForClass(Class clazz) {}
Run Code Online (Sandbox Code Playgroud)

它会返回比较器,比如String,Double,Integer,但会有一个

public void addComparatorForClass(Class clazz, Comparator comparator) {}
Run Code Online (Sandbox Code Playgroud)

对于任意类型.

ngn*_*ngn 13

代替:

factory.getComparatorForClass(x.getClass()).compare(x, y)
Run Code Online (Sandbox Code Playgroud)

你可以简单地实现Comparable和写:

x.compareTo(y)
Run Code Online (Sandbox Code Playgroud)

String,原始包装器和标准集合已经实现Comparable.


IAd*_*ter 10

使用CompareToBuilderCommons Lang.

协助实现Comparable.compareTo(Object)方法.

要使用此类,请按如下方式编写代码:

public class MyClass {
  String field1;
  int field2;
  boolean field3;

  ...

  public int compareTo(Object o) {
    MyClass myClass = (MyClass) o;
    return new CompareToBuilder()
      .appendSuper(super.compareTo(o)
      .append(this.field1, myClass.field1)
      .append(this.field2, myClass.field2)
      .append(this.field3, myClass.field3)
      .toComparison();
  }
}
Run Code Online (Sandbox Code Playgroud)