2011-11-01 49 views
18

Điều tôi có là HashMap<String, ArrayList<String>> được gọi là examList. Những gì tôi muốn sử dụng nó là để tiết kiệm điểm của mỗi khóa học một người đang theo học. Vì vậy, chìa khóa cho điều này HashMapcouresID và giá trị là ArrayList của tất cả các điểm (cố gắng thi) mà người này đã thực hiện.Java, Cách thêm giá trị vào Danh sách mảng được sử dụng làm giá trị trong HashMap

Vấn đề là tôi biết làm thế nào để làm việc với danh sách mảng và hashmaps bình thường, nhưng tôi không chắc chắn làm thế nào để thậm chí bắt đầu với ví dụ này. Vì vậy, làm thế nào tôi, hoặc ví dụ, thêm một cái gì đó để ArrayList bên trong HashMap?

Trả lời

34

Bạn có thể sử dụng thư viện Google ổi, thư viện có triển khai cho Bản đồ nhiều giá trị (Bộ sưu tập Apache Commons cũng đã triển khai nhưng không có generics).

Tuy nhiên, nếu bạn không muốn sử dụng một lib bên ngoài, sau đó bạn sẽ làm điều gì đó như thế này:

if (map.get(id) == null) { //gets the value for an id) 
    map.put(id, new ArrayList<String>()); //no ArrayList assigned, create new ArrayList 

map.get(id).add(value); //adds value to list. 
+0

Ngoài ra còn có Spring MultiValueMap và LinkedMultiValueMap – eduardohl

+0

Ví dụ hay, chính xác những gì một Java n00b như tôi yêu cầu. – goelakash

2

Trước tiên, bạn phải tra cứu đúng ArrayList trong HashMap:

ArrayList<String> myAList = theHashMap.get(courseID) 

Sau đó, thêm các lớp mới cho ArrayList:

myAList.add(newGrade) 
6
String courseID = "Comp-101"; 
List<String> scores = new ArrayList<String>(); 
scores.add("100"); 
scores.add("90"); 
scores.add("80"); 
scores.add("97"); 

Map<String, ArrayList<String>> myMap = new HashMap<String, ArrayList<String>>(); 
myMap.put(courseID, scores); 

Hope this helps!

+0

và làm thế nào tôi có thể nhận được các phím, giá trị? – David

+0

@David Sử dụng phương thức keySet() của HashMap. Nó sẽ trả về tất cả các khóa trong ví dụ trên sẽ là Strings. Sau đó, đối với mỗi khóa, bạn có thể nhận được ArrayList tương ứng bằng cách sử dụng phương thức get (key) của HashMap, trong đó 'key' là các khóa bạn đã truy xuất trước đó. Hi vọng điêu nay co ich! – Mechkov

+0

cảm ơn người đàn ông! Rất hữu ích! – David

3

Trước tiên, bạn retreieve giá trị (cho một chìa khóa) và sau đó bạn thêm một yếu tố mới để nó

ArrayList<String> grades = examList.get(courseId); 
    grades.add(aGrade); 
4
  • Đầu tiên tạo HashMap.

    HashMap> mapList = new HashMap>();

  • Lấy giá trị từ HashMap dựa vào khóa nhập của bạn.

    ArrayList arrayList = mapList.get (key);

  • Thêm giá trị vào danh sách mảng.

    arrayList.add (addvalue);

  • Sau đó, một lần nữa đặt danh sách mảng dựa vào giá trị khóa đó. mapList.put (key, arrayList);

Nó sẽ làm việc .....

+0

Có cần phải đưa mảng danh sách trở lại vào băm không? hoặc là một mục được thêm vào bằng cách tham khảo? –

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