Общий HashMap - PullRequest
       20

Общий HashMap

0 голосов
/ 12 сентября 2011

У меня есть один метод, check, который имеет два хеш-карты в качестве параметров. Ключи этих карт String и значение String или Arraylist.

Какое решение лучше:

public static boolean check(HashMap<String, ?> map1, HashMap<String, ?> map2) {
    for ( entry <String, ? > entry : map1.entryset()) {
        ...
    }
}

или

public static <V> boolean check(HashMap<String, V> map1, HashMap<String, V> map2) {
    for ( entry <String, V > entry : map1.entryset()) {
        ...
    }    
}

а почему?

А вы также можете дать мне больше информации о разнице между этими двумя решениями?

Ответы [ 2 ]

5 голосов
/ 12 сентября 2011

Во первых,? может быть что угодно. Один может быть <String, String> другой может быть <String, Double>. Во втором варианте они должны быть одинаковыми.

Теперь первое приемлемо, если у вас есть возможность конвертировать их, чтобы они были сопоставимы. Например, вы можете сделать .toString() для обоих значений для сравнения. Но лично я предпочел бы второе, поскольку оно позволяет мне лучше контролировать происходящее и дает мне проверку типов во время компиляции.

0 голосов
/ 12 сентября 2011

Вторая заставляет во время компиляции параметризовать две карты так же, как и друг друга. Это также позволяет вам делать что-то полезное с картами, например вставлять в них элементы не null (это невозможно с подстановочными знаками).

...