0

Javaでは、バイナリ文字列を操作します(たとえば、「00010010」では、プログラムの目的でこれらのバイナリ文字列を作成するときに、最初にゼロが追加されます)。私は機能を持っています

private static boolean isJinSuperSets(String J, List<String> superSets) {

    for (String superJ : superSets)
        if (superJ.equals(J)) return true;

    return false;
}

これは、バイナリ文字列Jがバイナリ文字列superSetsのリストに含まれているかどうかをチェックします。

equals()はStringオブジェクトで使用していますが、2進文字列を2進数に変換し、ビット単位の演算を実行して、それらが等しいかどうかを確認することにより、このコードを高速化したいと思います。

それを達成するための秘訣を教えてください。

4

1 に答える 1

1

ここにintがあります:

for (String superJ : superSets)
        return Integer.valueOf(superJ,2) == Integer.valueOf(J,2);
}

速度については、ベンチマークでテストする必要があります(最初は常に遅くなることに注意してください)。

Jが複数回使用されている場合に最適化する最良の方法:J2を整数としてどこかに置き、それをテストします。

于 2012-07-15T15:32:31.797 に答える