Получения значения по ключу

174
20 декабря 2017, 21:40

В общем стоит довольно таки тривиальная задача, получения значения по ключу из HashMap или TreeMap (до сих пор не знаю для этой задачи лучше использовать хеш или три мап).

char[] decode = {'A', 'B', 'D', 'B', 'D', 'D', 'D', 'C', 'D', 'D', 'B', 'D', 'D',
        'D', 'D', 'D', 'B', 'D', 'B', 'D', 'C', 'B', 'D', 'C', 'D', 'B', 'C', 'B', 'D', 'B'}; //это у нас массив который будем сравнивать с ключём в HashMap
HashMap<String,Object> map=new HashMap<String,Object>();
        Set<Map.Entry<String,Object>> entrySet=map.entrySet();
        map.put("A", "11");
        map.put("B", "01");
        map.put("C", "10");
        map.put("D", "00"); //тут мы заполнили наш HashMap ключем и значением
String encode = ""; //пустой стринг, куда будем записывать наши значения полученные по ключу
Object desiredObject=new Object();
desiredObject=decode; //тут мы приравниваем объекту массив, который будем сравнивать с ключем в хешмапе
for (Map.Entry<String,Object> pair : entrySet) {
if (desiredObject.equals(pair.getKey())) {
    encode=encode+pair.getValue();// нашли наше значение и возвращаем  значение
}

}

Честно признаюсь подобный код нашёл на просторах интернета и якобы правильный при таких операциях, только вот мой String остается всегда пустым. Изначально у меня была идея сделать обычное сравнение через двумерный цикл, как это делается с обычными массивами и списками, но в Java так просто это не работает.

Пример ответа в стринг должен быть примерно таким (11 01 00 01 00 ...) то есть все найденные значения по заданному ключу записаться в тот пустой стринг

Answer 1
    char[] decode = {'A', 'B', 'D', 'B', 'D', 'D', 'D', 'C', 'D', 'D', 'B', 'D', 'D',
        'D', 'D', 'D', 'B', 'D', 'B', 'D', 'C', 'B', 'D', 'C', 'D', 'B', 'C', 'B', 'D', 'B'}; //это у нас массив который будем сравнивать с ключём в HashMap
    Map<Character, String> map = new HashMap<>();
    map.put('A', "11");
    map.put('B', "01");
    map.put('C', "10");
    map.put('D', "00"); 
    StringBuilder encode = new StringBuilder(); 
    for (char ch : decode) {
        String get = map.get(ch);
        if (get!=null) encode.append(get);
    }
    System.out.println(encode.toString());
READ ALSO
Перебор ключей JSONObject (библиотека org.json)

Перебор ключей JSONObject (библиотека org.json)

На сервер приходит jsonobject , с неизвестными ключами например:{"perviy":"1","2":"vtoroy","223dsds0":"adfad"} как вытянуть все ключи и соответствующие значения?

270
Что значит ClassFanOutComplexityCheck

Что значит ClassFanOutComplexityCheck

Не могу понять, что значит ошибка чекстайла?

172
Как присвоить переменной String значение из файла Strings?

Как присвоить переменной String значение из файла Strings?

Проблема в том, что когда я присваиваю строке значение из файла strings в классе активности через String string = getResources()getString(R

199