感谢@Thilo,我对这样的界面感到愤怒:
public interface compareOp<T> {
public boolean compare(T op1, T op2);
}
以及“实现者”:
private static final compareOp<Integer> GreaterThan = new compareOp<Integer>() {
@Override
public boolean compare(Integer x, Integer y) {
if (x > y)
return true;
return false;
}
};
private static final compareOp<Integer> SameThan = new compareOp<Integer>() {
@Override
public boolean compare(Integer x, Integer y) {
if (x == y)
return true;
return false;
}
};
private static final compareOp<Integer> LessThan = new compareOp<Integer>() {
@Override
public boolean compare(Integer x, Integer y) {
if (x < y)
return true;
return false;
}
};
我写了一些代码来进行比较 我需要这个代码三次,以达到更佳效果,但我不想重复该代码,因此我制作了一个参数 comp 类型比较器并检查:
if (comp.compare(output1[i][n1], output2[j][n2]) == 0)
我的比较器不能用于正常排序,因为它们违反了 -1,0,1 规则,但我不将它们用于其他用途
对于 Java 规则来说,这种风格是否不好?
这是我的比较器的代码:
private static final Comparator<Integer> GreaterThen = new Comparator<Integer>() {
@Override
public int compare(Integer x, Integer y) {
if (x > y)
return 0;
return -1;
}
};
private static final Comparator<Integer> SameThen = new Comparator<Integer>() {
@Override
public int compare(Integer x, Integer y) {
if (x == y)
return 0;
if (x > y)
return 1;
return -1;
}
};
private static final Comparator<Integer> LessThen = new Comparator<Integer>() {
@Override
public int compare(Integer x, Integer y) {
if (x < y)
return 0;
return 1;
}
};
这就是我使用它们的方式:
new Helpers().subSetsCompared(input1, 3, input2, 4, GreaterThen);
new Helpers().subSetsCompared(input1, 3, input2, 4, SameThen);
new Helpers().subSetsCompared(input1, 3, input2, 4, LessThen);
最佳答案
如果这些不是“真正的”比较器,并且您仅从自己的代码中调用它们,那么您不妨定义自己的接口(interface)。这对我来说似乎更干净。
关于java - 使用比较器 "offtopic"是不好的 java 风格吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18914695/