2010-07-27 42 views
17

Có cách nào để lặp qua một Hashmap java và in ra tất cả các giá trị cho mỗi khóa là một phần của Hashmap?java hashmap key iteration

Trả lời

16

Với for-each loop, sử dụng Map.keySet() cho lặp phím, Map.values() cho các giá trị lặp lại và Map.entrySet() cho iterating cặp khóa/giá trị. Lưu ý rằng tất cả những điều này là trực tiếp xem bản đồ đã được sử dụng để có được chúng, do đó bất kỳ sửa đổi nào bạn thực hiện đối với bất kỳ bản đồ nào trong số ba bản đồ hoặc bản đồ cũng sẽ phản ánh tất cả những điều khác nữa.

1
hashmap.keySet().iterator() 

sử dụng vòng lặp for để lặp lại.

sau đó sử dụng hashmap.get(item) để có được giá trị cá nhân,

Ngoài ra chỉ cần sử dụng entrySet() để nhận một iterator cho các giá trị.

+1

Hoặc, tùy thuộc vào ping nghĩa là "giá trị", 'hashmap.values ​​(). Iterator()'. –

2
for (Map.Entry<T,U> e : map.entrySet()) 
{ 
    T key = e.getKey(); 
    U value = e.getValue(); 
    . 
    . 
    . 
} 

Ngoài ra, nếu bạn sử dụng LinkedHashMap khi triển khai, bạn sẽ lặp lại thứ tự các cặp khóa/giá trị được chèn vào. Nếu điều đó không quan trọng, hãy sử dụng HashMap.

+0

Câu trả lời rất rõ ràng, cảm ơn –

21

Có, bạn thực hiện việc này bằng cách lấy entrySet() của bản đồ. Ví dụ:

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

// ... 

for (Map.Entry<String, Object> entry : map.entrySet()) { 
    System.out.println("key=" + entry.getKey() + ", value=" + entry.getValue()); 
} 

(Ofcourse, thay thế StringObject với các loại mà bạn đặc biệt Map có - mã trên chỉ là một ví dụ).

2
public class abcd { 
    public static void main(String[] args) 
    { 
     Map<Integer, String> testMap = new HashMap<Integer, String>(); 
     testMap.put(10, "a"); 
     testMap.put(20, "b"); 
     testMap.put(30, "c"); 
     testMap.put(40, "d"); 
     for (Entry<Integer, String> entry : testMap.entrySet()) { 
      Integer key=entry.getKey(); 
      String value=entry.getValue(); 
     } 
    } 
}