gpt4 book ai didi

java - BitSet,没有 containsAll,最好的解决方法?

转载 作者:行者123 更新时间:2023-11-29 06:35:23 27 4
gpt4 key购买 nike

我惊讶地发现,java.util.BitSet 没有containsAll 方法。我需要的是如下内容:

BitSet s1 = newBitSet(1, 2, 3, 4, 6);
BitSet s2 = newBitSet(1, 2, 3, 4);
BitSet s3 = newBitSet(1, 2, 3, 4, 5);
assertTrue(containsAll(s1, s2));
assertFalse(containsAll(s1, s3));

private static BitSet newBitSet(int... values) {
BitSet bitSet = new BitSet();
for (int value : values) {
bitSet.set(value);
}
return bitSet;
}

实现 containsAll 方法的最佳变体是什么?有比这样迭代更优雅的方法吗? (取自 JavaDoc 的 wird 迭代代码)

private static boolean containsAll(BitSet s1, BitSet s2) {
for (int i = s2.nextSetBit(0); i >= 0; i = s2.nextSetBit(i + 1)) {
if (!s1.get(i)) {
return false;
}
}
return true;
}

最佳答案

你的方法很好。如果您更喜欢使用更多内置的 BitSet 方法,您可以克隆第一个位集并对第二个位集执行逻辑与,然后检查与第二个位集是否相等。

private static boolean containsAll(BitSet s1, BitSet s2) {
BitSet intersection = (BitSet) s1.clone();
intersection.and(b2);
return intersection.equals(s2)
}

关于java - BitSet,没有 containsAll,最好的解决方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21947375/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com