当前位置: 首页>>代码示例>>Java>>正文


Java RoaringBitmap.and方法代码示例

本文整理汇总了Java中org.roaringbitmap.RoaringBitmap.and方法的典型用法代码示例。如果您正苦于以下问题:Java RoaringBitmap.and方法的具体用法?Java RoaringBitmap.and怎么用?Java RoaringBitmap.and使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.roaringbitmap.RoaringBitmap的用法示例。


在下文中一共展示了RoaringBitmap.and方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: solve

import org.roaringbitmap.RoaringBitmap; //导入方法依赖的package包/类
static void solve(RoaringBitmap[] bits, int depth, int bitIndex, RoaringBitmap candidate, boolean[] output, Solution solution) {

        RoaringBitmap zero = RoaringBitmap.andNot(candidate, bits[bitIndex]);
        RoaringBitmap ones = RoaringBitmap.and(candidate, bits[bitIndex]);
        if (bitIndex > 0) {
            output[bitIndex] = true;
            solve(bits, depth + 1, bitIndex - 1, ones, output, solution);
        } else if (!ones.isEmpty()) {
            output[bitIndex] = true;
            solution.stream(output, ones.getCardinality());
        }
        if (bitIndex > 0) {
            output[bitIndex] = false;
            solve(bits, depth + 1, bitIndex - 1, zero, output, solution);
        } else if (!zero.isEmpty()) {
            output[bitIndex] = false;
            solution.stream(output, zero.getCardinality());
        }
    }
 
开发者ID:jivesoftware,项目名称:miru,代码行数:20,代码来源:Featuritis.java

示例2: inPlaceAnd

import org.roaringbitmap.RoaringBitmap; //导入方法依赖的package包/类
@Override
public void inPlaceAnd(RoaringBitmap original, RoaringBitmap bitmap) {
    try {
        original.and(bitmap);
    } catch (Throwable t) {
        LOG.error("WTF:" + original.getCardinality() + " inPlaceAnd " + bitmap.getCardinality());
        throw t;
    }
}
 
开发者ID:jivesoftware,项目名称:miru,代码行数:10,代码来源:MiruBitmapsRoaring.java

示例3: andTx

import org.roaringbitmap.RoaringBitmap; //导入方法依赖的package包/类
@Override
public RoaringBitmap andTx(List<MiruTxIndex<RoaringBitmap>> indexes, StackBuffer stackBuffer) throws Exception {
    if (indexes.isEmpty()) {
        return new RoaringBitmap();
    }

    RoaringBitmap container = indexes.get(0).txIndex((bitmap, filer, offset, stackBuffer1) -> {
        if (bitmap != null) {
            return bitmap;
        } else if (filer != null) {
            return bitmapFromFiler(filer, offset, stackBuffer1);
        } else {
            return new RoaringBitmap();
        }
    }, stackBuffer);

    if (container.isEmpty()) {
        return container;
    }

    for (MiruTxIndex<RoaringBitmap> index : indexes.subList(1, indexes.size())) {
        RoaringBitmap and = index.txIndex((bitmap, filer, offset, stackBuffer1) -> {
            if (bitmap != null) {
                return bitmap;
            } else if (filer != null) {
                return bitmapFromFiler(filer, offset, stackBuffer1);
            } else {
                return new RoaringBitmap();
            }
        }, stackBuffer);

        container.and(and);

        if (container.isEmpty()) {
            return container;
        }
    }

    return container;
}
 
开发者ID:jivesoftware,项目名称:miru,代码行数:41,代码来源:MiruBitmapsRoaring.java

示例4: add

import org.roaringbitmap.RoaringBitmap; //导入方法依赖的package包/类
@Override
public RoaringBitmap[] add(RoaringBitmap... set) {
    final int numSumBitmaps = 32 - Integer.numberOfLeadingZeros(set.length);
    int lastBitSlice = 0;
    RoaringBitmap[] acc = new RoaringBitmap[numSumBitmaps + 1]; // null
                                                                // sentinel
                                                                // at end
    acc[0] = set[0];
    for (int k = 1; k < set.length; ++k) {
        RoaringBitmap c = RoaringBitmap.and(set[k], acc[0]);
        if (k == 1)
            acc[0] = RoaringBitmap.xor(acc[0], set[k]);
        else
            acc[0].xor(set[k]);
        int i;
        for (i = 1; acc[i] != null; ++i) {
            RoaringBitmap temp1 = RoaringBitmap.xor(acc[i], c);
            c.and(acc[i]);
            acc[i] = temp1;
        }

        if (!c.isEmpty()) {
            acc[i] = c;
            lastBitSlice = i;
        }
    }
    return Arrays.copyOf(acc, lastBitSlice + 1);

}
 
开发者ID:lemire,项目名称:BitSliceIndex,代码行数:30,代码来源:BSTMAdder.java

示例5: add

import org.roaringbitmap.RoaringBitmap; //导入方法依赖的package包/类
/**
 * Returns as few bitmaps as needed, the first one carrying the least
 * significant bits.
 * 
 * @param a
 * @param b
 * @return
 */
public static RoaringBitmap[] add(RoaringBitmap[] a, RoaringBitmap[] b) {
    int mini = Math.min(a.length, b.length);
    int maxi = Math.max(a.length, b.length);
    ArrayList<RoaringBitmap> answer = new ArrayList<RoaringBitmap>(maxi + 1);
    int i = 0;
    RoaringBitmap carry = new RoaringBitmap();
    if (mini > 0) {
        answer.add(RoaringBitmap.xor(a[i], b[i]));
        carry = RoaringBitmap.and(a[i], b[i]);
        ++i;
    }
    for (; i < mini; ++i) {
        RoaringBitmap tmp = RoaringBitmap.xor(a[i], b[i]);
        answer.add(RoaringBitmap.xor(carry, tmp));
        carry.and(tmp);
        carry.or(RoaringBitmap.and(a[i], b[i]));
    }
    if (mini != maxi) {
        RoaringBitmap[] longest = a.length > b.length ? a : b;
        for (; i < maxi; ++i) {
            if (carry.isEmpty()) {
                answer.add(longest[i].clone());
            } else {
                answer.add(RoaringBitmap.xor(carry, longest[i]));
                carry.and(longest[i]);
            }
        }
    }
    if (!carry.isEmpty())
        answer.add(carry);
    return answer.toArray(a);
}
 
开发者ID:lemire,项目名称:BitSliceIndex,代码行数:41,代码来源:RippleCarry.java

示例6: slowbuildHalfAdder

import org.roaringbitmap.RoaringBitmap; //导入方法依赖的package包/类
private List<RoaringBitmap> slowbuildHalfAdder(RoaringBitmap inputA,
        RoaringBitmap inputB) {
    List<RoaringBitmap> ans = new ArrayList<RoaringBitmap>();
    RoaringBitmap carryOut = RoaringBitmap.and(inputA, inputB);
    RoaringBitmap sumBit = RoaringBitmap.xor(inputA, inputB);
    ans.add(carryOut);
    ans.add(sumBit);
    return ans;
}
 
开发者ID:lemire,项目名称:BitSliceIndex,代码行数:10,代码来源:SSUMAdder.java

示例7: buildHalfAdder

import org.roaringbitmap.RoaringBitmap; //导入方法依赖的package包/类
private List<RoaringBitmap> buildHalfAdder(RoaringBitmap inputA,
        RoaringBitmap inputB) {
    List<RoaringBitmap> ans = new ArrayList<RoaringBitmap>();
    RoaringBitmap carryOut = RoaringBitmap.and(inputA, inputB);
    inputA.xor(inputB);
    //RoaringBitmap sumBit = RoaringBitmap.xor(inputA, inputB);
    RoaringBitmap sumBit = inputA;
    ans.add(carryOut);
    ans.add(sumBit);
    return ans;
}
 
开发者ID:lemire,项目名称:BitSliceIndex,代码行数:12,代码来源:SSUMAdder.java

示例8: compare

import org.roaringbitmap.RoaringBitmap; //导入方法依赖的package包/类
/**
 * Treating the bitmaps as a bit-sliced index, solve for >=K.
 * 
 * @param acc
 * @param K
 * @param universeSize
 * @return
 */
@Override
public RoaringBitmap compare(RoaringBitmap[] acc, int K, int universeSize) {
    int lastBitSlice = acc.length - 1;
    // use the O'Neil and Quass
    // comparison. (Algo 4.2)
    int beGtrThan = K - 1;

    RoaringBitmap beq = new RoaringBitmap();
    beq.flip(0, universeSize); // all ones bitmap
    RoaringBitmap bgt = new RoaringBitmap();

    int numberOfLeadingZeroSlices = 32 - (lastBitSlice + 1);
    if (Integer.numberOfLeadingZeros(beGtrThan) < numberOfLeadingZeroSlices)
        return bgt;

    // an improvement is that we can stop as soon as there are only trailing
    // ones in the constant.
    int finalSlice = 0;
    finalSlice = Integer.numberOfTrailingZeros(~beGtrThan); // omitted
                                                            // optimization

    for (int i = lastBitSlice; i >= finalSlice; --i)
        if ((beGtrThan & (1 << i)) != 0)
            beq.and(acc[i]);
        else {
            bgt.or(RoaringBitmap.and(beq, acc[i]));
            beq.andNot(acc[i]);
        }

    return bgt;

}
 
开发者ID:lemire,项目名称:BitSliceIndex,代码行数:41,代码来源:BasicComparator.java

示例9: buildFullAdder

import org.roaringbitmap.RoaringBitmap; //导入方法依赖的package包/类
private List<RoaringBitmap> buildFullAdder(RoaringBitmap inputA,
        RoaringBitmap inputB, RoaringBitmap inputC) {
    List<RoaringBitmap> ans = new ArrayList<RoaringBitmap>();
    RoaringBitmap temp1 = RoaringBitmap.xor(inputA, inputB);
    RoaringBitmap sumBit = RoaringBitmap.xor(temp1, inputC);
    temp1.and(inputC);
    inputA.and(inputB);
    temp1.or(inputA);
    RoaringBitmap carryOut = temp1;
    ans.add(carryOut);
    ans.add(sumBit); // added after carryOut
    return ans;
}
 
开发者ID:lemire,项目名称:BitSliceIndex,代码行数:14,代码来源:SSUMAdder.java

示例10: compare

import org.roaringbitmap.RoaringBitmap; //导入方法依赖的package包/类
/**
 * Treating the bitmaps as a bit-sliced index, solve for >=K.
 * 
 * @param acc
 *            bitmaps in bit-sliced format
 * @param K
 *            threshold (>=)
 * @param universeSize
 *            useless here
 * @return
 */
@Override
public RoaringBitmap compare(RoaringBitmap[] acc, int K, int universeSize) {
    RoaringBitmap lastSpineGate = null;
    int beGtrThan = K - 1;
    ArrayList<RoaringBitmap> orInputs = new ArrayList<RoaringBitmap>();
    int leastSignifZero = Long.numberOfTrailingZeros(~beGtrThan);
    // work from most significant bit down to the last 1.
    for (int workingBit = acc.length - 1; workingBit >= leastSignifZero; --workingBit) {
        if ((beGtrThan & (1L << workingBit)) == 0L) {
            if (lastSpineGate == null) // don't make a singleton AND!
                orInputs.add(acc[workingBit]);
            else {
                // really make the AND
                orInputs.add(RoaringBitmap.and(lastSpineGate,
                        acc[workingBit]));
            }
        } else {
            if (lastSpineGate == null)
                lastSpineGate = acc[workingBit];
            else
                lastSpineGate = RoaringBitmap.and(lastSpineGate,
                        acc[workingBit]);
        }
    }
    return FastAggregation.or(orInputs.toArray(new RoaringBitmap[0]));
}
 
开发者ID:lemire,项目名称:BitSliceIndex,代码行数:38,代码来源:OwenComparator.java

示例11: compare

import org.roaringbitmap.RoaringBitmap; //导入方法依赖的package包/类
/**
 * Treating the bitmaps as a bit-sliced index, solve for >=K.
 * 
 * @param acc
 *            bitmaps in bit-sliced format
 * @param K
 *            threshold (>=)
 * @param universeSize
 *            useless here
 * @return
 */
@Override
public RoaringBitmap compare(RoaringBitmap[] acc, int K, int universeSize) {
    RoaringBitmap lastSpineGate = null;
    int beGtrThan = K - 1;
    ArrayList<RoaringBitmap> orInputs = new ArrayList<RoaringBitmap>();
    int leastSignifZero = Long.numberOfTrailingZeros(~beGtrThan);
    // work from most significant bit down to the last 1.
    for (int workingBit = acc.length - 1; workingBit >= leastSignifZero; --workingBit) {
        if ((beGtrThan & (1L << workingBit)) == 0L) {
            if (lastSpineGate == null) // don't make a singleton AND!
                orInputs.add(acc[workingBit]);
            else {
                // really make the AND
                orInputs.add(RoaringBitmap.and(lastSpineGate,
                        acc[workingBit]));
            }
        } else {
            if (lastSpineGate == null)
                lastSpineGate = acc[workingBit];
            else
                lastSpineGate = RoaringBitmap.and(lastSpineGate,
                        acc[workingBit]);
        }
    }
    return FastAggregation.horizontal_or(orInputs.toArray(new RoaringBitmap[0]));
}
 
开发者ID:lemire,项目名称:BitSliceIndex,代码行数:38,代码来源:OwenHorizontalComparator.java

示例12: and

import org.roaringbitmap.RoaringBitmap; //导入方法依赖的package包/类
@Override
public Bitmap and(Bitmap other) {
  return new RoaringBitmapWrapper(
      RoaringBitmap.and(bitmap, ((RoaringBitmapWrapper) other).bitmap));
}
 
开发者ID:lemire,项目名称:java_vs_c_bitmap_benchmark,代码行数:6,代码来源:RoaringBitmapWrapper.java

示例13: containsAll

import org.roaringbitmap.RoaringBitmap; //导入方法依赖的package包/类
@Override
public boolean containsAll(RoaringBitmap container, RoaringBitmap contained) {
    RoaringBitmap intersection = RoaringBitmap.and(container, contained);
    return intersection.getCardinality() == contained.getCardinality();
}
 
开发者ID:jivesoftware,项目名称:miru,代码行数:6,代码来源:MiruBitmapsRoaring.java

示例14: containsAny

import org.roaringbitmap.RoaringBitmap; //导入方法依赖的package包/类
@Override
public boolean containsAny(RoaringBitmap container, RoaringBitmap contained) {
    RoaringBitmap intersection = RoaringBitmap.and(container, contained);
    return !intersection.isEmpty();
}
 
开发者ID:jivesoftware,项目名称:miru,代码行数:6,代码来源:MiruBitmapsRoaring.java


注:本文中的org.roaringbitmap.RoaringBitmap.and方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。