2011-09-29 2 views
12

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

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");  
    } 
} 
+1

Массив целых чисел? Вы пытаетесь поместить несколько массивов в HashMap? –

+0

Не должно быть разницы между массивами и любыми другими объектами. Что вы пробовали? – biziclop

+0

Эти значения в map.put являются строками, теперь я хочу сохранить массив значений int (некоторые цифры) –

ответ

18
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); 
0

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

21

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

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}); 
    } 
} 
0

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

6

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

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

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

-1

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

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

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

Смежные вопросы