Подтвердить что ты не робот

Как я могу хранить 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>();

Может ли кто-нибудь помочь мне, какой метод и как использовать в списке, чтобы продолжить хранение моей карты?

4b9b3361

Ответ 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];
}