【问题标题】:How to pass key of a value into variable in HashMap如何将值的键传递给HashMap中的变量
【发布时间】:2018-07-05 07:42:21
【问题描述】:

我可以将值的键传递给 hashmap 中的变量吗? 例如,我有一个值“A”的键 987456321。如何在变量中传递密钥,以便我可以进一步细分密钥并将其打印为987-654-321

  • 987为第一,
  • 654 居中,
  • 321 最后 这样我就可以打印了

    第一+ "-" + 中间+ "-" + 最后 > 作为 987-654-321

通过使用 toString() 方法。 我是Java新手,请帮助我

public static void main(String[] args) 
{

    HashMap<Long, String> hashMap = new HashMap<>();
    hashMap.put(987456321L, "A");
    hashMap.put(321654998L, "B");
    hashMap.put(874563210L, "C");
    hashMap.put(987453216L, "B");
    hashMap.put(321650123L, "C");
    hashMap.put(874568745L, "C");

    System.out.println("Size of Map:"+hashMap.size());

    System.out.println("Enter no: ");
    userInput = new Scanner(System.in); 
    no = userInput.nextLong();
    String name = hashMap.get(no);
    System.out.println(name);

    for (Map.Entry<Long, String> entry : hashMap.entrySet()) 
    {
        String key = entry.getKey().toString();
        String value = entry.getValue();
        System.out.println("name " + value + "- Number " + key);
    }

}

【问题讨论】:

  • 您似乎希望我们为您编写一些代码。虽然许多用户愿意为陷入困境的编码人员编写代码,但他们通常只有在发布者已经尝试自己解决问题时才会提供帮助。展示这项工作的一个好方法是包含您迄今为止编写的代码、示例输入(如果有的话)、预期输出以及您实际获得的输出(控制台输出、回溯等)。您提供的详细信息越多,您可能收到的答案就越多。检查FAQHow to Ask
  • 目前还不太清楚您真正想要实现什么。 “在变量中传递密钥”是什么意思?
  • 我猜他是想按值从map中获取key并放入变量
  • 您的地图是否包含例如两个不同键的值“A”?
  • 简单地迭代地图并使用键做任何事情

标签: java hashmap key


【解决方案1】:

您可以像这样遍历地图的所有键值对:

for (final Map.Entry<String, String> entry : map.entrySet()) {
  String key = entry.getKey();
  String value = entry.getValue();
  // do whatever you need to do with key
}

如果您只对某个值的键感兴趣 - 没有多大意义,因为相同的值可能存储在具有不同键的映射中 - 您需要检查上述循环中的值,直到找到感兴趣的键值对。例如:

if (Objects.equals(value, "A")) {
  // do something with the key for value "A"
}

【讨论】:

    【解决方案2】:

    1.具体值的解决方案:

    这个方法返回你的值的键

     public static <T, E> Set<T> getKeysByValue(Map<T, E> map, E value) {
            Set<T> keys = new HashSet<T>();
            for (Entry<T, E> entry : map.entrySet()) {
                if (Objects.equals(value, entry.getValue())) {
                    keys.add(entry.getKey());
                }
            }
            return keys;
        }
    

    现在您所要做的就是遍历返回的集合并使用包含您的密钥的变量做您想做的事情

    for (Long key : set) {
        String s = String.valueOf(key);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-05
      • 2013-08-03
      • 1970-01-01
      • 2011-09-23
      • 1970-01-01
      • 2013-06-01
      • 2022-12-25
      • 2017-01-10
      相关资源
      最近更新 更多