【发布时间】:2019-11-29 10:20:47
【问题描述】:
我正在寻找一种方法来将此方法从 for 循环更改为循环 ArrayList 以更改为 HashMap。
public Card findCard(String cardName) {
assert cardName != null;
Card foundCard = null;
if (allKnownCardsMap.containsKey(cardName)) {
foundCard = allKnownCardsMap.get(cardName);
}
// for( Card cd :allKnownCards ) {
// if( cd.cardHasName( cardName ) ) {
// foundCard = cd ;
// }
// }
return foundCard;
}
注释掉的代码是原始代码,最上面的 if 语句是我创建的,但我不知道为什么它没有给出相同的结果。
【问题讨论】:
-
如果没有看到
ArrayList的初始化和您的HashMap等效项的初始化,我们将无法帮助您。如果您的地图以卡片名称作为键并将卡片作为值,则上述方法将起作用(尽管它比需要的更复杂)。所以听起来你创建地图的方式有问题。 (关于“比需要的更复杂”:不需要if,只需使用Card foundCard = allKnownCardsMap.get(cardName);。get如果找不到则返回null。) -
我的盲注是问题出在
cardHasName方法以及如何检查名称是否相等。您是否将Strings 与==进行比较? -
T.J 谢谢,我不知道为什么,但是当我取出 if 语句时,它起作用了。我不知道它不需要。
-
请不要在这里破坏您的问题 - 它们将始终回滚到上一个好的版本。
标签: java loops dictionary for-loop hash