сравнить ключ хава-карты Java со строкой - PullRequest
0 голосов
/ 31 мая 2019

Я хочу сравнить строку со значением ключа хэш-карты.

private Map<String, Integer> map1= new HashMap<>();
 map1.put("User1" , 100);
 map1.put("User2" , 200);
 map1.put("User3" , 300);

public void test(String user, int size) {
    for(String key : map1.keySet()) {
        if (key.equals(user)) {
          System.out.println("yes");    
        }else{
          System.out.println("no"); 
        }
    }
}

пока мой код не работает, и я получаю ответ "нет", даже когда пользователь на карте, есть идеи, в чем проблема?

Я немного изменил код, но ответ все еще нет:


import java.util.*;

public class A1 {

 private static Map<String, Integer> map1= new HashMap<>();


 public static boolean test(String user, int size) {
    for(String key : map1.keySet()) {
        if (key.equalsIgnoreCase(user)) {
          return true;  
        }
    }
    return false;
}

    public static void main(String[] args) {
        map1.put("User1" , 100);
        map1.put("User2" , 200);
        map1.put("User3" , 300);
        if(test("User1" , 100)){
                  System.out.println("yes");    
        }else{
          System.out.println("no"); 
        }
    }
}

@ Джейсон Ти

map1.containsKey(user)

работал.

1 Ответ

0 голосов
/ 31 мая 2019
public static boolean test(String user, int size) {
    for(String key : map1.keySet()) {
        if (key.equalsIgnoreCase(user)) {
          return true;  
        }else{
          return false;
        }
    }
    return false;

Этот цикл всегда возвращается на свою первую итерацию, поэтому он будет возвращать true, только если первый ключ совпадает.

Это так же, как:

Iterator<String> it = map1.keySet().iterator();
return it.hasNext() && it.next().equalsIgnoreCase(user);

Если вы хотите продолжить поиск, пока не найдете соответствующий ключ, удалите return false; внутри цикла.

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