【问题标题】:Java getting certain value from a hashmapJava 从哈希图中获取特定值
【发布时间】:2015-06-01 12:16:39
【问题描述】:

代码

   HashMap <String, Integer> polllist = new HashMap<>();
   public boolean onCommand(CommandSender s, Command Cmd, String label, String[] args)
   {

   }

这是我将要搜索的整数添加到哈希图中的位置

    String combine = args[1] + " " + args[2] + " " + args[3] + " " + msg;
    int pn = Integer.valueOf(args[1]);
    int pollnumber = pn;
    polllist.put(combine, pollnumber);

所以我制作了一个包含一个字符串和一个整数的 HashMap。我试过这样做。

    if(polllist.containsValue(args[1]))
    {

    }

这似乎不起作用,我放了一个 else 语句,当我知道我在 hashmap 中放了一个等于 args[1] 的值时,它总是会触发。我试图找到整数值,但它似乎不起作用。我如何获得字符串值。

【问题讨论】:

  • 你的 hashmap 声明语句是什么?
  • HashMap polllist = new HashMap();
  • 您需要提供所有相关的详细信息:显示您声明哈希映射的代码、您在其中输入值的位置,并显示您如何运行程序以及作为args[1] 传递的内容。并将其放在问题中(有一个“编辑”按钮),cmets 不适用于您问题的一部分。
  • 假设argsmain 方法的String[] 类型的单个参数,那么显然HashMap 的值类型为Integer 将不包含String 类型的值.

标签: java string hashmap integer


【解决方案1】:

试试这个

if(polllist.containsValue(Integer.valueOf(args[1])))

您在设置值之前从String 转换为int,因此您在查找时必须这样做。

另外,这是使用 HashMap 的一种非常落后的方式。当大多数查找发生在键而不是值上时,HashMap 性能最佳。您可以考虑只切换它们,例如:HashMap&lt;Integer, String&gt;。但这需要您的整数是唯一的。

【讨论】:

    【解决方案2】:

    你的字符串是关键。因此你应该使用:

     for (String key : polllist.keySet()) { 
         if(polllist.get(key).equals(yourInteger) ) 
             { 
               //do something 
             } 
      }
    

    【讨论】:

    • 循环遍历整个 hashmaps 键集。每把钥匙都得到它的价值。查看该值是否是您要查找的整数。
      ` for (String key : polllist.keySet()) { if(polllist.get(key).equals(yourInteger) ) { //做点什么 } } `
    • 这假定整数只在 pollist 中存在一次,或者至少你只关心它至少存在一次。
    • 不,不是。您正在遍历整个哈希图。每当遇到整数时,if 语句就为真。因此,您可以对 hashmap 中每次出现的整数做任何您想做的事情。
    猜你喜欢
    • 2016-05-26
    • 2018-05-29
    • 1970-01-01
    • 2016-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多