Хэш-карта типа <Список , Список> не принимает ><Список, Список>

#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?