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 对象上使用,但我想通过将二进制字符串转换为二进制数并执行按位运算 AND 来查看它们是否相等来加速此代码。

你能给我一些关于如何实现这一点的技巧吗?

4

1 回答 1

1

这里是int:

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

您必须使用基准测试(注意第一次总是较慢)以获得速度。

如果 J 被多次使用,则优化的最佳方法是:将 J2 作为 Integer 某处并对其进行测试。

于 2012-07-15T15:32:31.797 回答