@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;
}
};
私は比較を行うsomコードを書いていますが、このコードをおろし金に3回必要としますが、コードを複製したくないので、パラメーター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);