这个问题是关于如何处理 Java for-each 循环中的元素。我有一个 hashTable,它是一个 LinkedLists 数组。LinkedList 节点的数据部分包含TableEntry<K,V>
,其中 K 和 V 是键和值类型。
我编写了一个 for 循环来查看 LinkedList 中的每个 TableEntry,检查一个键是否等于 TableEntry 键。语法有点难看,所以我想也许 for-each 循环会更优雅/简单。
确实写起来更简单。但是,当我完成我的 IDE 时抱怨 element.getValue() 是 Object 类型,而不是 V 类型。我在语句前面放了一个类型转换为 V 并且它停止抱怨。我还没有测试过这段代码,但我想知道,首先这是一种可以接受的做法吗?其次,即使元素具有类型 V 的方法,为什么元素最终会成为 Object 类型?
@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;
}