【问题标题】:How to search Object stored in HashMap如何搜索存储在 HashMap 中的对象
【发布时间】:2014-02-22 14:29:03
【问题描述】:

我有一个关于 HashMap 的问题。如何从 HashMap 中搜索并返回对象详细信息

我在下面声明了hashmap

private  HashMap <String,Champions> AllChampions = new HashMap<String, Champions>();

下面我声明了一个对象并将其添加到数组中,我想搜索它

Champions d = new Worrier("Elblond", 200, "Sword");

AllChampions.put(b.getName(), b);

如何搜索存储在 Hash Map 中的对象。我在下面使用的代码不起作用

private boolean isChampion(String name)
{
    return AllChampions.containsKey(name);
}


public String getChampion(String name)
{
    if (isChampion(name))
    {
        return AllChampions.get(name).toString();
    }
    return null;
}

【问题讨论】:

  • 公开冠军 getChampion(String name){ return AllChampions.get(name);这将返回具有给定名称的冠军。然后你对 Champion 对象做任何你想做的事。例如 Champions champ = getChampion("Elblond");字符串武器 = champ.getWeapon(); //武器等于“剑”
  • 什么不起作用?你看到了什么行为,你期望看到什么?
  • 你创建d。但是你把b.那么你怎么能得到d
  • 你说的不管用是什么意思?

标签: java oop hash


【解决方案1】:

你的错误在这里:

Champions d = new Worrier("Elblond", 200, "Sword");
AllChampions.put(b.getName(), b); // you are adding b, but declared d

改成:

AllChampions.put(d.getName(), d);

顺便说一句,您的getChampion() 方法几乎没有任何价值:直接使用AllChampions.get(name)

【讨论】:

    【解决方案2】:

    对你最后一种方法的一个建议。

    public Champion getChampion(String name)
    {
        if (AllChampions.containsKey(name))
        {
            return (Champion) AllChampions.get(name);
        }
        return null;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 2020-08-14
      • 2017-12-23
      • 1970-01-01
      • 2012-08-30
      • 2017-07-17
      • 2017-04-28
      相关资源
      最近更新 更多