使用具有依赖性的Comparable / Comparator

时间:2014-05-02 13:49:57

标签: java compare

我被要求为某个班级实施ComparableCompartor,我们称之为V
假设我有V s的集合或集合(不确定,但我认为不重要)。

V有一种方法,可以评估它的重量",我们称之为evaluateWeight(String data)
您可以理解,权重取决于作为data的参数的输入evaluateWeight

因此,比较取决于此参数data

一种解决方案可能是;添加一个包含最后一个权重计算的数据成员。 这个问题还有另一种巧妙的解决办法吗? 谢谢。

1 个答案:

答案 0 :(得分:4)

data作为比较器的字段。制作比较器时将其传入。然后,当比较器完成其工作时,它可以将其传递给它所比较的​​所有内容的evaluateWeight方法。

public class ComparatorWithData implements Comparator<V> {
    private String data;

    public ComparatorWithData(String data) {
        this.data = data;
    }

    @Override
    public int compare(V o1, V o2) {
        return o1.evaluateWeight(data).compareTo(o2.evaluateWeight(data));
    }
} 

当然,此示例假设evaluateWeight使用compareTo方法返回内容。