назначить сопоставленное значение для входной строки - PullRequest
0 голосов
/ 26 января 2019

Я не могу получить значение строки, которую я ввел согласно моим отображенным значениям ??Я хочу получить значение, которое я хочу получить как 8118198920

import java.util.*;

class maptable1 {
    public static void main(String args[]) {
        HashMap<String, Integer> hm =
                new HashMap<String, Integer>();
        hm.put("A", Integer.valueOf(1));
        hm.put("B", Integer.valueOf(2));
        hm.put("C", Integer.valueOf(3));
        hm.put("D", Integer.valueOf(4));
        hm.put("E", Integer.valueOf(5));
        hm.put("F", Integer.valueOf(6));
        hm.put("G", Integer.valueOf(7));
        hm.put("H", Integer.valueOf(8));
        hm.put("I", Integer.valueOf(9));
        hm.put("J", Integer.valueOf(10));
        hm.put("K", Integer.valueOf(11));
        hm.put("L", Integer.valueOf(12));
        hm.put("M", Integer.valueOf(13));
        hm.put("N", Integer.valueOf(14));
        hm.put("O", Integer.valueOf(15));
        hm.put("P", Integer.valueOf(16));
        hm.put("Q", Integer.valueOf(17));
        hm.put("R", Integer.valueOf(18));
        hm.put("S", Integer.valueOf(19));
        hm.put("T", Integer.valueOf(20));
        hm.put("U", Integer.valueOf(21));
        hm.put("V", Integer.valueOf(22));
        hm.put("W", Integer.valueOf(23));
        hm.put("X", Integer.valueOf(24));
        hm.put("Y", Integer.valueOf(25));
        hm.put("Z", Integer.valueOf(26));

        System.out.println("The Value is: " + hm.get("HARSHIT"));
    }
}

Ответы [ 2 ]

0 голосов
/ 26 января 2019

Хеш-карты не работают так.

Чтобы получить то, что вы хотите, вам нужно вызвать hm.get() с каждым символом в строке, преобразовать целое число, которое вы получаете в строку, и соединить все эти строки вместе.

Один из способов реализовать это - использовать потоки:

// "s" is a string variable containing "HARSHIT"
String result = s.chars().mapToObj(x -> Character.toString((char)x))
        .map(x -> Integer.toString(hm.get(x)))
        .collect(Collectors.joining());

Также обратите внимание, что вам не нужно Integer.valueOf. Вы можете просто использовать само целое число.

0 голосов
/ 26 января 2019

HashMap - это collection на основе Map, в котором хранятся пары key и value, т.е. (key,value) или (K,V). Если вы введете value 1 для клавиши «А», вы можете получить value 1 от key «А». Таким образом, в вашем случае вы должны получить значение каждой клавиши «H», «A», «R», «S», «H», «I», «T» отдельно и объединить result в конец, чтобы получить желаемый результат.

String myString = "HARSHIT";
String result = Arrays.stream(myString.split(""))
                      .map(hm::get)
                      .map(String::valueOf)
                      .reduce("", String::concat);
System.out.println("The Value is: " + result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...