Как я могу хранить HashMap <String, ArrayList <String>> внутри списка?
My hashmap сохраняет строку как ключ и arraylist как значения. Теперь мне нужно включить это в список. То есть он будет иметь следующую форму:
List<HashMap<String, ArrayList<String>>>
Это объявления, которые я использовал:
Map<String, ArrayList<String>> map = new HashMap<String, ArrayList<String>>();
ArrayList<String> arraylist = new ArrayList<String>();
map.put(key,arraylist);
List<String> list = new ArrayList<String>();
Может ли кто-нибудь помочь мне, какой метод и как использовать в списке, чтобы продолжить хранение моей карты?
Ответы
Ответ 1
Всегда старайтесь использовать ссылку на интерфейс в коллекции, это добавляет большей гибкости.
В чем проблема с приведенным ниже кодом?
List<Map<String,List<String>>> list = new ArrayList<Map<String,List<String>>>();//This is the final list you need
Map<String, List<String>> map1 = new HashMap<String, List<String>>();//This is one instance of the map you want to store in the above list.
List<String> arraylist1 = new ArrayList<String>();
arraylist1.add("Text1");//And so on..
map1.put("key1",arraylist1);
//And so on...
list.add(map1);//In this way you can add.
Вы можете легко сделать это, как показано выше.
Ответ 2
Во-первых, позвольте мне немного исправить ваше выражение:
List<Map<String, List<String>>> listOfMapOfList =
new HashList<Map<String, List<String>>>();
Обратите внимание, что я использовал конкретный класс (HashMap
) только один раз. Важно использовать интерфейс, в котором вы можете впоследствии изменить реализацию.
Теперь вы хотите добавить элемент в список, не так ли? Но элемент - это карта, поэтому вы должны ее создать:
Map<String, List<String>> mapOfList = new HashMap<String, List<String>>();
Теперь вы хотите заполнить карту. К счастью, вы можете использовать утилиту, которая создает списки для вас, иначе вам придется создавать список отдельно:
mapOfList.put("mykey", Arrays.asList("one", "two", "three"));
ОК, теперь мы готовы добавить карту в список:
listOfMapOfList.add(mapOfList);
НО:
Прекратите создавать сложные коллекции прямо сейчас! Подумайте о будущем: вам, вероятно, придется изменить внутреннюю карту на что-то еще или список, чтобы установить и т.д. Это, вероятно, приведет к перезаписи значительных частей вашего кода. Вместо этого определите класс, содержащий ваши данные, а затем добавьте его в одномерную коллекцию:
Позвоните в класс Student
(как пример):
public Student {
private String firstName;
private String lastName;
private int studentId;
private Colectiuon<String> courseworks = Collections.emtpyList();
//constructors, getters, setters etc
}
Теперь вы можете определить простой набор:
Collection<Student> students = new ArrayList<Student>();
Если в будущем вы захотите разместить своих учеников на карте, где ключ studentId
, сделайте это:
Map<Integer, Student> students = new HashMap<Integer, Student>();
Ответ 3
Попробуйте следующее:
List<Map<String, ArrayList<String>>> mapList =
new ArrayList<Map<String, ArrayList<String>>>();
mapList.add(map);
Если ваш список должен иметь тип List<HashMap<String, ArrayList<String>>>
, тогда объявите переменную map
как HashMap
, а не map
.
Ответ 4
Сначала вам нужно определить List
как:
List<Map<String, ArrayList<String>>> list = new ArrayList<>();
Чтобы добавить Map
в List
, используйте добавить (E e) метод:
list.add(map);
Ответ 5
class Student{
//instance variable or data members.
Map<Integer, List<Object>> mapp = new HashMap<Integer, List<Object>>();
Scanner s1 = new Scanner(System.in);
String name = s1.nextLine();
int regno ;
int mark1;
int mark2;
int total;
List<Object> list = new ArrayList<Object>();
mapp.put(regno,list); //what wrong in this part?
list.add(mark1);
list.add(mark2);**
//String mark2=mapp.get(regno)[2];
}