所以这个问题很简单。
我正在使用二进制值矩阵。我选择使用布尔数组的HashSet。我需要跟踪每列有多少个零和零。遍历矩阵的行来计算数据太昂贵了。在Java中执行此操作的最佳方法是什么?
我尝试了什么,问题是什么?
我扩展了HashSet并覆盖了HashSet的添加和删除方法。在添加/删除布尔数组之前,我只需更新一个跟踪所需数据的字段。一切似乎都很好,我用各种java方法来测试它是否正常工作(比如addAll,iterators等等)。我偶然发现了一个bug。
像这样的代码
for (Iterator<Row> iter = matrix.iterator(); iter.hasNext(); ) {
iter.remove();
}
最终不会调用我的覆盖的添加或删除方法,因此我的字段中我保留每列中的1和0的计数将不会更新。
我想将每列计数1和0的此功能添加到现有数据结构中。
- 为了避免混淆,我用类Row替换了Boolean []。Row基本上是一个布尔值数组,带有一些其他方法,equals和hashCode。