【问题标题】:Is there a way I can convert from an ArrayList to a HashMap in a for loop and get the same output?有没有办法可以在 for 循环中从 ArrayList 转换为 HashMap 并获得相同的输出?
【发布时间】: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


【解决方案1】:

有点不确定上下文,因为您似乎已经在

中有一些描述的地图

所有已知卡片地图

。但是要将 Arraylist 转换为 HashMap:

List<String> myList = new ArrayList<String>();
    Map<Integer, String> myMap = new HashMap<Integer, String>();
    myList.add("A");
    myList.add("B");

    for (int i = 0; i < aList.size(); i++) {
      myMap.put(i + 1, aList.get(i));
    }

【讨论】:

    【解决方案2】:

    我假设 allKnownCards 是 Card 类型的列表,所以首先你需要将该列表更改为地图,然后你可以执行任何地图操作,这样你就可以执行类似这里的操作

    Map<String, Card> allKnownCardsMap = allKnownCards.stream()
                                    .collect( Collectors.toMap(Card::getName, 
                                            Function.identity()) );
    

    现在您可以使用代码来检查名称

    if (allKnownCardsMap.containsKey(cardName)) {
            foundCard = allKnownCardsMap.get(cardName);
        }
    

    【讨论】:

      猜你喜欢
      • 2020-04-16
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多