Как сделать цикл по всем ключам HashMap? - PullRequest
1 голос
/ 23 марта 2010

Я пытаюсь сделать это следующим образом:

public String getValue(String service, String parameter) {
    String inputKey = service + ":" + parameter;
    Set keys = name2value.keySet();
    Iterator itr = keys.iterator();
    while (itr.hasNext()) {     
        if (inputKey.equal(itr.next())) {
            return name2value.get(inputKey);
        }
        return "";
    }
}

И я получаю сообщение об ошибке: не удается найти символ method.equal (java.lang.Object).

Я думаю, это потому, что itr.next () не считается строкой. Как я могу решить эту проблему? Я пытался заменить Set keys на Set<String> keys. Это не помогло.

Ответы [ 2 ]

7 голосов
/ 23 марта 2010

Метод, который вы хотите, называется equals, а не equal.

Однако в вашем коде есть несколько других недостатков.

Во-первых, вам не нужно перебирать все ключи в Map, чтобы найти определенный ключ, просто используйте get и / или containsKey.

Второй return тоже неверен. Он вернет "", если first key не совпадает. Если вы хотите вернуть "", когда ни один из ключей не совпадает, return должен идти в конце метода, например ::

public String getValue(String service, String parameter) {
    String inputKey = service + ":" + parameter;
    String value = name2value.get(inputKey);
    if (value == null) {
        return "";
    } else {
        return value;
    }
}
0 голосов
/ 23 марта 2010

Firstoff, метод равен () Во-вторых, приведите itr.next() к строке вместо Set.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...