Как передать ключ значения в переменную в HashMap - PullRequest
0 голосов
/ 05 июля 2018

Могу ли я передать ключ значения в переменную в 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 голосов
/ 05 июля 2018

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);
}
0 голосов
/ 05 июля 2018

Вы можете перебрать все пары ключ-значение вашей карты следующим образом:

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
}

Если вас интересует ключ только для определенного значения - не имеет особого смысла, поскольку одно и то же значение может храниться на карте с разными ключами - вам нужно будет проверять значение в вышеуказанном цикле, пока не найдете пара ключ-значение интереса. E.g.:

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