2011-09-29 39 views
12

Tôi mới sử dụng Java. Làm thế nào tôi có thể lưu trữ một mảng các giá trị số nguyên trong một HashMap, sau đó tôi viết HashMap này trong một tập tin txt nhưng điều này không quan trọng tại thời điểm này. Tôi có thể lưu trữ các trường đơn lẻ chứ không phải một mảng. Bất kỳ ý tưởng?Lưu trữ một mảng trong 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

Một mảng các số nguyên nào? Bạn đang cố gắng đặt nhiều mảng vào HashMap? –

+0

Không có sự khác nhau giữa các mảng và các đối tượng khác. Bạn đã thử gì? – biziclop

+0

các giá trị trong map.put là Strings, bây giờ tôi muốn lưu trữ một mảng các giá trị int (một số chữ số) –

Trả lời

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

chọn một, ví dụ

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

hoặc chỉ

HashMap<String, int[]> map = new HashMap<String, int[]>(); 
map.put("Something", coeficientUzura); 
0

Nếu bạn muốn lưu trữ nhiều giá trị cho khóa (nếu tôi hiểu bạn một cách chính xác), bạn có thể thử một MultiHashMap (có sẵn trong thư viện khác nhau, không chỉ commons-bộ sưu tập).

21

Không chắc của câu hỏi chính xác nhưng là những gì bạn đang tìm kiếm?

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

Cuộc sống của bạn sẽ dễ dàng hơn nhiều nếu bạn có thể lưu Danh sách dưới dạng giá trị thay vì một mảng trong Bản đồ đó.

6

Có, giao diện Bản đồ sẽ cho phép bạn lưu trữ Mảng dưới dạng giá trị. Dưới đây là một ví dụ rất đơn giản:

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

Ngoài ra, tùy thuộc vào trường hợp sử dụng của bạn, bạn có thể muốn nhìn vào sự hỗ trợ Multimap được cung cấp bởi guava.

-1

Bạn có thể lưu trữ các đối tượng trong HashMap.

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

Bạn chỉ cần truyền lại chính xác.

Các vấn đề liên quan