#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