【发布时间】:2016-02-22 17:38:47
【问题描述】:
我有一个类Section,其中包含几个方法,包括get_key() 和get_angle()。 Section 类型的项目被添加到在类 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
}
}
}
}
}
但该方法不会删除任何元素。我分别检查了 Delete() 方法,它以及在此方法上调用的其他方法都可以正常工作。我真的需要弄清楚。所以我会很感激你的帮助。
【问题讨论】:
-
可能必须先查看您的 Section 课程。
-
我没有看到你在哪里初始化大小?它应该基于Hash的大小。
-
我在类Hashtable的构造函数中初始化。如果需要,我可以添加这部分代码。
-
这里有几点注意事项: 1) 如果您担心精度(大多数情况下,您可能是这样),则不应使用 double... 改用 BigDecimal。此外,使用普通的 Java 约定来命名变量和方法(例如,代替 hash_array,使用 hashArray,removeGiven 代替 remove_given 等)。
标签: java data-structures hashtable