我正在尝试创建一个method
来计算哈希表中发生的冲突次数。我会检查整个table
以查看有多少buckets
超过1 element
?
草案:
public int getCollisions() {
int counter = 0;
for (int i = 0; i < buckets.length; i++) {
if (buckets.length > 1) {
counter += i;
}
}
return counter;
}
答案 0 :(得分:2)
我可能会用这个 -
public long getCollisions() {
long counter = 0;
for (int i = 0; i < buckets.length; i++) {
if (buckets[i].length > 1) {
counter += buckets[i].length; // 2 (or more) items collided in this bucket.
}
}
return counter;
}
答案 1 :(得分:1)
您正在添加存储桶的索引,而不是计数器的冲突数。试试这个:
public int getCollisions() {
int counter = 0;
for (int i = 0; i < buckets.length; i++) {
if (buckets[i].length > 1) {
counter += buckets[i].length-1;
}
}
return counter;
}
这里我假设如果存储桶中有n个对象(其中n> 1),则该存储桶中存在n-1个冲突。如果我在假设时不正确,那么只需删除-1,它应该可以正常工作。