Have data
as a field of the comparator. Pass it in when you make the comparator. Then when the comparator does its work, it can pass it into the evaluateWeight
method of everything that it's comparing.
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));
}
}
This example assumes, of course, that evaluateWeight
returns something with a compareTo
method.