#java #generics #hashmap
Вопрос:
У меня есть следующая хэш-карта:
public Map<List<K>, List<V>> m= new HashMap<List<K>, List<V>>();
У меня есть строка значений String vStr= "Hello, Hi";
. Я хотел бы поместить эти значения на карту.
Каков наилучший способ размещения vStr
карты m
?
Первый шаг, который я делаю, это String[] values = vStr.split(",");
где все ключи K allKeys = (K) "Hej";
Однако, когда я пытаюсь вставить вышесказанное в карту, чтобы:
m.put(Arrays.asList(allKeys),Arrays.asList(values));
Я получаю ошибку
The method put(List<K>, List<V>) in the type Map<List<K>,List<V>> is not applicable for the arguments (List<K>, List<String>)
Есть ли способ не прибегать к броску List<String>
List<V>
? Если мне придется, есть ли стандартный и хороший способ сделать это?
Комментарии:
1. попробуйте это
public Map<List<?>, List<?>> m= new HashMap<List<?>, List<?>>();
2. @codingmonster вау! спасибо, это решило проблему. Я не думал использовать подстановочный знак.
3. 🙂 Я не тестировал его, потому что у меня нет среды для тестирования. Нет ли здесь каких-либо ошибок? Или мне очень повезло.
4. Мне кажется, что проблема XY , зачем использовать дженерики, если вы применяете строки?
5. Хотя использование типов подстановочных знаков может устранить ошибку компиляции, они не особенно полезны. Где/как определяются K и T?