如何将值的键传递给HashMap中的变量

时间:2018-07-05 07:42:22

标签: java hashmap key

我可以将值的键传递给hashmap中的变量吗? 例如,我有一个键987456321,其值为“ A”。如何在变量中传递键,以便我可以进一步细分键并将其打印为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);
    }

}

2 个答案:

答案 0 :(得分:0)

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

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"
}

答案 1 :(得分:0)

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);
}
相关问题