使用具有依赖性的 Comparable/Comparator

Ann*_*eOK 0 java compare

我被要求实现ComparableCompartor为某个类,我们称之为V
假设我有 s 的 Collection 或 Set (还不确定,但我认为这并不重要)V

V有一个方法,来评估它的“权重”,我们称之为evaluateWeight(String data)
正如您所理解的,权重取决于输入,data该输入作为 的参数给出evaluateWeight

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

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

Daw*_*ica 5

具有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));
    }
} 
Run Code Online (Sandbox Code Playgroud)

当然,这个例子假设evaluateWeight用一个compareTo方法返回一些东西。