Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建位矩阵和扫描集列的有效方法_Java_Matrix_Bloom Filter - Fatal编程技术网

Java 创建位矩阵和扫描集列的有效方法

Java 创建位矩阵和扫描集列的有效方法,java,matrix,bloom-filter,Java,Matrix,Bloom Filter,这是我目前的问题,我有许多Bloom过滤器,我想将其构建成一个矩阵,比如: [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1] [1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0] ... [1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0] 每一列都将从一个位集派生,除了循环所有行和比较每个索引外,还有没有更有效的方法来查找位集为1的所有列 有什么数据结构可以帮我解决这个问题吗?假设您正在查找哪些列包含一个,以及

这是我目前的问题,我有许多Bloom过滤器,我想将其构建成一个矩阵,比如:

[0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1]
[1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0]
...
[1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0]
每一列都将从一个位集派生,除了循环所有行和比较每个索引外,还有没有更有效的方法来查找位集为1的所有列


有什么数据结构可以帮我解决这个问题吗?

假设您正在查找哪些列包含一个,以及每个列包含多少个,那么循环遍历它们似乎是最好的主意

如果您使用一些短路逻辑来实现循环,那么您将获得更好的平均运行时间

比如:

for (int column = 0; column < width; column++) {
    for (int row = 0; row < height; row++) {
        if (array[column][row] == 1) {
            list.append(column);
            break;  // move on to the next column because we don't care what's 
                    // left in this column as we already found our '1'
int index = 0;

while (index < BitSet.length()) {
    index = BitSet.nextSetBit(index);
    list.append(index);
    index++;
}