1
我想实现散列集,它将存储Word对象,但是当我添加多个单词对象时,它给我总是大小1,我真的不知道这里的问题在哪里是一些部分我的代码:Java HashSet错误的大小
public class HashWordSet implements WordSet{
private Node[] buckets = new Node[8];
private int size=0;
private class Node{
Word value;
Node next = null;
Node prev = null;
public Node (Word word){
value = word;
}
}
private int getBucketNumber(Word word){
int hash = word.hashCode();
if(hash<0){
hash = -hash;
}
return hash%buckets.length;
}
private void rehash(){
Node[] temp = buckets;
buckets = new Node[2*temp.length];
size = 0;
for (Node n : temp){
while (n != null){
add(n.value);
n = n.next;
}
}
}
@Override
public Iterator iterator() {
// TODO Auto-generated method stub
return null;
}
@Override
public void add(Word word) {
int pos = getBucketNumber(word);
Node node = buckets[pos];
while(node != null){
if(node.value.equals(word))
return;
else
node = node.next;
}
node = new Node(word);
node.next = buckets[pos];
buckets[pos] = node;
size++;
if(size == buckets.length)
rehash();
}
@Override
public boolean contains(Word word) {
// TODO Auto-generated method stub
return false;
}
@Override
public int size() {
return size;
}
public String toString() {
StringBuffer buf = new StringBuffer();
for (int i=0;i<buckets.length;i++) {
Node node = buckets[i];
if (node == null) continue;
buf.append("Bucket "+i+":");
while (node != null) {
buf.append(" "+node.value);
node = node.next;
}
buf.append("\n");
}
return buf.toString();
}
}
我刚更新了帖子,我把全班同学:// – Tano
我假设你有更多的错误?你有什么试图调试这个问题? – jgitter
我开始实施一步一步的方法,我现在没有任何其他错误,因为我只实现了两种方法:/ – Tano