Ошибка при использовании вложенной структуры карты в Java

#java #collections #map #hashmap

#java #Коллекции #Карта #hashmap

Вопрос:

Я пытаюсь поместить карту в другую, но получаю ошибку, когда это длится дольше.

Map1

 Map<String, String> innerMap = new HashMap<String, String>();
  

Map2

 Map<Map<String,String>, List> outerMap = new HashMap<Map<String,String>, List>();
  

Map3

 Map<Map<Map<String,String>, List>, List> returnValueMap = new   HashMap<Map<Map<String,String>, List>, List>();
  

Я пытаюсь поместить map1 в map2, а затем map2 в map3, но оператор объявления выдает мне ошибку. Может кто-нибудь предложить. Спасибо.

     Map<String, String> innerMap = new HashMap<String, String>(); 
    innerMap.put(key,value); 

    List articleTitleList = new ArrayList(); 
    Map<Map<String,String>, List> outerMap = new HashMap<Map<String,String>, List>();    

    outerMap.put(innerMap,articleTitleList); 
    List articleList = new ArrayList(); 
    Map<Map<Map<String,String>, List>, List> returnValueMap = new HashMap<Map<Map<String,String>, List>, List>(); 
    returnValueMap.put(outerMap,articleList)
  

Комментарии:

1. Можете ли вы поделиться кодом, как вы пытаетесь это сделать?

2. Какая ошибка? Сделайте List общий.

3. в опубликованных 3-х утверждениях нет ошибки, добавьте mroe detail, чтобы получить ответ

4. Объявление работает для меня

5. Вы также можете использовать оператор diamond <>, чтобы избежать записи дважды.

Ответ №1:

 public static void main(String[] args) {

    Map<String, String> innerMap = new HashMap<String, String>();
    Map<Map<String,String>, List> outerMap = new HashMap<Map<String,String>, List>();
    Map<Map<Map<String,String>, List>, List> returnValueMap = new HashMap<Map<Map<String,String>, List>, List>();

}
  

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

Ответ №2:

Вы можете использовать оператор Guava или diamond, чтобы избежать опечаток и написания одного и того же дважды. Например:

Map1

 Map<String, String> innerMap = new HashMap<String, String>();
  

изменения в:

 Map<String, String> innerMap = new HashMap<>(); // Diamond operator
Map<String, String> innerMap2 = Maps.newHashMap(); // Using Guava
  

Или Map3

 Map<Map<Map<String,String>, List>, List> returnValueMap = new   HashMap<Map<Map<String,String>, List>, List>();
  

изменения в

 Map<Map<Map<String,String>, List>, List> returnValueMap = new HashMap<>(); // Diamond operator
Map<Map<Map<String,String>, List>, List> returnValueMap2 = Maps.newHashMap(); // Using Guava