有谁知道Java中的某种比较器工厂,有一个
public Comparator getComparatorForClass(Class clazz) {}
它会为 String、Double、Integer 之类的东西返回比较器,但会有一个
public void addComparatorForClass(Class clazz, Comparator comparator) {}
对于任意类型。
有谁知道Java中的某种比较器工厂,有一个
public Comparator getComparatorForClass(Class clazz) {}
它会为 String、Double、Integer 之类的东西返回比较器,但会有一个
public void addComparatorForClass(Class clazz, Comparator comparator) {}
对于任意类型。
代替:
factory.getComparatorForClass(x.getClass()).compare(x, y)
你可以简单地实现Comparable
和编写:
x.compareTo(y)
字符串、原始包装器和标准集合已经实现Comparable
。
使用CompareToBuilder
Commons 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(); } }
我不知道有什么类似的事情。如果你真的需要这样的东西,自己实现一个应该不会太难。
但是,您能否详细说明为什么需要这样的东西?通常不应该有类的“默认”比较器。如果这个类有某种自然顺序,你真的应该让它实现java.lang.Comparable
,并实现Comparable#compareTo(Object) : int
。
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Comparable.html
比较器需要扩展..这是基于可重用代码实现..在这些方法中,您可以自定义数据比较..实现很简单..只需实现 Comparator 接口..覆盖它的 compareto 方法和放置比较代码..并返回您认为在值方面更大的..
Java 中不存在默认比较器。但是,如果您正在使用例如自定义搜索器进行编码,它打算使用比较器而不是 Comparable 类派生类型的 compareTo() 方法,您可以编写一个静态内部比较器类作为默认比较器,只需实现compare() 方法通过调用 compareTo()。
例子:
类 Searcher> { 私有 Comparator 比较器;
Searcher(Comparator<T> comparator) {
this.comparator = comparator;
}
Searcher() {
this(new DefaultComparator<T>());
}
int search(...) {
...
}
private static class DefaultComparator<E extends Comparable<E>>
implements Comparator<E> {
public int compare(E o1, E o2) {
return o1.compareTo(o2);
}
}