Сохранить массив в HashMap

я новичок в Java. Как я могу хранить массив значений целых чисел в HashMap, после этого я записываю этот HashMap в txt-файл, но на данный момент это не важно. Я могу хранить отдельные поля, но не массив. Любые идеи ?

public void salveazaObiectulCreat(String caleSpreFisier) {

    HashMap map = new HashMap();

    map.put ("Autorul",numelePrenumeleAutorului);
    map.put ("Denumirea cartii",denumireaCartii);
    map.put ("Culoarea cartii",culoareaCartii);
    map.put ("Genul cartii",gen);
    map.put ("Limba",limba);
    map.put ("Numarul de copii",numarulDeCopii);
    map.put ("Numarul de pagini",numarulDePagini);
    map.put ("Pretul cartii",pretulCartii);

  try  {

      File file = new File(caleSpreFisier);  

      FileOutputStream f = new FileOutputStream(file);  

      ObjectOutputStream s = new ObjectOutputStream(f);          

      s.writeObject(map);

      s.close();

       } catch(Exception e){

           System.out.println("An exception has occured");     
    }   
}

person Community    schedule 29.09.2011    source источник
comment
Массив каких целых чисел? Вы пытаетесь поместить несколько массивов в HashMap?   -  person Hovercraft Full Of Eels    schedule 29.09.2011
comment
Не должно быть никакой разницы между массивами и любыми другими объектами. Что вы пробовали?   -  person biziclop    schedule 29.09.2011
comment
эти значения в map.put являются строками, теперь я хочу сохранить массив значений int (некоторые цифры)   -  person    schedule 29.09.2011
comment
Нам нужно будет увидеть остальную часть кода, например, что такое numelePrenumeleAutorului.   -  person Paul Bellora    schedule 29.09.2011
comment
@biziclop я пробовал использовать для статистики, что-то вроде этого: for (int i=0;i‹numarulDeCopii;i++) { map.put(i, coeficientUzura[i]); }   -  person    schedule 29.09.2011
comment
Посмотрите здесь, который кажется копией stackoverflow.com/ вопросы/7602665/хранить-массив-в-хэш-карте   -  person Auscyber    schedule 19.11.2016


Ответы (6)


HashMap<String, List<Integer>> map = new HashMap<String, List<Integer>>();
HashMap<String, int[]> map = new HashMap<String, int[]>();

выбрать один, например

HashMap<String, List<Integer>> map = new HashMap<String, List<Integer>>();
map.put("Something", new ArrayList<Integer>());
for (int i=0;i<numarulDeCopii; i++) {
    map.get("Something").add(coeficientUzura[i]); 
}

или просто

HashMap<String, int[]> map = new HashMap<String, int[]>();
map.put("Something", coeficientUzura);
person jornb87    schedule 29.09.2011
comment
если вы получите значение в recyclerview, например, subject .getsubject(); в классе адаптера, то как это должно быть реализовано - person Adnan haider; 24.03.2021

Не уверен в точном вопросе, но это то, что вы ищете?

public class TestRun
{
     public static void main(String [] args)
     {
        Map<String, Integer[]> prices = new HashMap<String, Integer[]>();

        prices.put("milk", new Integer[] {1, 3, 2});
        prices.put("eggs", new Integer[] {1, 1, 2});
     }
}
person jeff    schedule 29.09.2011

Да, интерфейс Map позволит вам хранить массивы как значения. Вот очень простой пример:

int[] val = {1, 2, 3};
Map<String, int[]> map = new HashMap<String, int[]>();
map.put("KEY1", val);

Кроме того, в зависимости от вашего варианта использования вы можете просмотреть Поддержка Multimap, предлагаемая guava.

person Mike Deck    schedule 29.09.2011

Если вы хотите сохранить несколько значений для ключа (если я вас правильно понимаю), вы можете попробовать MultiHashMap (доступен в различных библиотеках, а не только в общих коллекциях).

person michael667    schedule 29.09.2011

Ваша жизнь станет намного проще, если вы сможете сохранить список в качестве значения вместо массива на этой карте.

person duffymo    schedule 29.09.2011

Вы можете хранить объекты в HashMap.

HashMap<String, Object> map = new HashMap<String, Object>();

Вам просто нужно правильно отлить его обратно.

person Bill    schedule 29.09.2011