Java 查找加载的哈希表

Java 查找加载的哈希表,java,hashtable,Java,Hashtable,我有一个关于计算哈希表负载的问题。因此,哈希表中存在的对象数。我知道当哈希表数组中的对象超过60%时,效率就会降低 我添加了“add”方法,这样您就可以看到我是如何将对象添加到哈希表中的。 由于某些原因,加载始终返回为0 class MyHashTable<T>{ private T[]values; private int size; //hash table size increases 10^n public MyHashTable(){ size = 0; v

我有一个关于计算哈希表负载的问题。因此,哈希表中存在的对象数。我知道当哈希表数组中的对象超过60%时,效率就会降低

我添加了“add”方法,这样您就可以看到我是如何将对象添加到哈希表中的。 由于某些原因,加载始终返回为0

class MyHashTable<T>{
private T[]values;
private int size;
//hash table size increases 10^n
public MyHashTable(){
    size = 0;
    values = (T[])(new Object[10]);
}
 public void add(T object){
    size = values.length;
    //checks if the # of stuff in the array is over 60%
    //expand if true
    if ((size+10)/size > 0.6){
        size*=2;
        T[]tmp = (T[]) (new Object[size]);
        for(int i=0; i<size/10; i++){
            if (values[i]!=null){
                add(values[i],tmp);
            }
        }
        values = tmp;
    }
    add(object, values);
}

public void add(T object, T[]values){   
    int location = Math.abs(object.hashCode())%values.length;
    while(values[location]!=null){
        location = (location+1)%values.length;
    }
    //System.out.println(object.hashCode());
    values[location] = object;
}
public int getLoad(){
    int load = 0;
    int location = 0;
    while(values[location]!=null){
        load+=1;
        location = (location+1)%values.length;
    }
    return load;
}
类MyHashTable{
私人T[]值;
私有整数大小;
//哈希表大小增加10^n
公共MyHashTable(){
尺寸=0;
值=(T[])(新对象[10]);
}
公共无效添加(T对象){
大小=值。长度;
//检查数组中填充的#是否超过60%
//如果为true,则展开
如果((尺寸+10)/尺寸>0.6){
尺寸*=2;
T[]tmp=(T[])(新对象[大小];

对于(inti=0;i我认为问题在于您的
add(T对象)
方法。 首先检查负载系数

 //checks if the # of stuff in the array is over 60%
 //expand if true
 if ((size+10)/size > 0.6){
 ....
这里有两个问题

只有当大小为负数时,才能计算为
false

假设
size=10
然后
size+10/size
=
20/10
=
2

这可能不是这行代码的意图

另一个问题是,这是一个整数除法,它将返回一个整数。在进行除法之前,必须将
大小
转换为
双精度
或乘以
1.0
,以获得
双精度