从哈希表中删除项(java)

从哈希表中删除项(java),java,data-structures,hashtable,Java,Data Structures,Hashtable,我有一个包含几个方法的类部分,包括方法get_key()和get_angle()。类型为Section的项被添加到类hashtable中实现的hashtable中。 根据我的任务,我应该从哈希表中删除函数get_angle()的值大于给定值的元素 class Hashtable{ private Section[] hash_array; //array of cells of the hashtable public int size; public void remove_given(d

我有一个包含几个方法的类部分,包括方法get_key()和get_angle()。类型为Section的项被添加到类hashtable中实现的hashtable中。 根据我的任务,我应该从哈希表中删除函数get_angle()的值大于给定值的元素

class Hashtable{
private Section[] hash_array;  //array of cells of the hashtable
public int size;

public void remove_given(double given_value)
{
    for(int i = 0; i < size; i++)
    {
        if (hash_array[i] != null)
        {
            double value = hash_array[i].get_angle();  //value of needed function to compare
            if (value > given_value)
            {
                int key_ = hash_array[i].get_key();  //get key for the item in order to delete it       
                Delete(key_);   //delete item       
            }
        }           
    }
}

}
类哈希表{
私有部分[]哈希_数组;//哈希表的单元格数组
公共整数大小;
公共无效删除给定值(双给定值)
{
对于(int i=0;i给定值)
{
int key=hash_数组[i]。get_key();//获取项的键以将其删除
删除(键);//删除项
}
}           
}
}
}

但该方法不会删除任何元素。我单独检查了Delete()方法,它与此方法上调用的其他方法一样工作正常。我真的需要弄清楚。因此,我将非常感谢您的帮助。

调试您的代码,它是否进入for循环。如何初始化
size
变量的值?如果默认情况下忘记初始化它,它将为零。最好从
hash\u数组中获取大小。length

首先,您使用的是未初始化的全局变量
size
,在
For
循环中使用的大小需要是哈希集合的大小。散列是如何初始化的?里面有你的想法吗?我会按照前面提到的建议使用调试器逐步完成代码,可能键不是您认为的键…

可能必须首先查看您的节类。我看不到您在哪里初始化大小?它应该基于哈希的大小。我在类哈希表的构造函数中初始化。如果需要的话,我可以添加这部分代码。这里有几个注意事项:1)如果您担心精度(大多数情况下,您可能是这样的),那么不应该使用double。。。改用BigDecimal。此外,使用普通Java约定命名变量和方法(例如,使用hashArray代替hash_数组,使用removeGiven代替remove_给定等)。即使我编写hash_数组.length代替变量大小,也不能解决我的问题。无论如何,谢谢你的帮助。答案已更改,请参见上文。好的,我试试。谢谢你的帮助。它确实进入了循环。我猜问题就在其中。我通过类哈希表的构造函数初始化大小