这个问题关于如何处理Java for-each循环中的元素。我有一个哈希表,它是一个LinkedLists数组。 LinkedList节点的数据部分包含TableEntry,其中K和V是键和值类型。
我写了一个for循环来查看LinkedList中的每个TableEntry,检查一个键是否等于TableEntry键。语法有点丑,所以我想可能for-each循环会更优雅/简单。
事实上写起来很简单。然而,当我完成我的IDE抱怨说,element.getValue()是Object类型的,而不是类型V.我把一个类型强制转换为语句前面的V,它停止抱怨。我还没有测试过这个代码,但我想知道,首先这是一个可接受的做法?第二,为什么元素最终会成为Object类型,即使它们具有类型V的方法?
@Override
public V getValue(K key)
{
int index = getHashIndex(key);
if(hashTable[index] != null)
{
//Standard for loop
for(int i = 0; hashTable[index].get(i) != null; i++)
{
if(hashTable[index].get(i).getKey().equals(key))
{
return hashTable[index].get(i).getValue();
}
}
//For-each loop should do same thing?
for(TableEntry element : hashTable[index])
{
if(element.getKey().equals(key))
{
return (V) element.getValue();
}
}
}
return null;
}