2010-02-15 46 views

Trả lời

8
HashMap map = new HashMap(); 
Object[][] arr = new Object[map.size()][2]; 
Set entries = map.entrySet(); 
Iterator entriesIterator = entries.iterator(); 

int i = 0; 
while(entriesIterator.hasNext()){ 

    Map.Entry mapping = (Map.Entry) entriesIterator.next(); 

    arr[i][0] = mapping.getKey(); 
    arr[i][1] = mapping.getValue(); 

    i++; 
} 
+0

Bây giờ, chúng ta có thể tạo luồng trực tuyến không? –

5

Điều này chỉ có thể thực hiện khi các loại khóa và giá trị giống nhau.

Given:

HashMap<String,String> map; 

tôi có thể tạo một mảng từ bản đồ này với vòng lặp đơn giản này:

String[][] array = new String[map.size()][2]; 
int count = 0; 
for(Map.Entry<String,String> entry : map.entrySet()){ 
    array[count][0] = entry.getKey(); 
    array[count][1] = entry.getValue(); 
    count++; 
} 
-1

lặp trên Bản đồ của bạn sử dụng entrySet, và điền vào kỷ lục mảng của bạn với các đối tượng nhập cảnh

3

Làm thế nào về

Object[][] array = new Object[][]{map.keySet.toArray(), map.entrySet.toArray()}; 

Hoặc, để cụ thể hơn về các loại, chúng ta hãy nói rằng họ đang Strings: Set 's toArray nhận một đối số gợi ý, do đó

String[][] array = new String[][]{map.keySet.toArray(new String[0]), map.entrySet.toArray(new String[0])}; 

Edit: Tôi chỉ nhận ra một vài ngày sau đó rằng trong khi điều này có thể hoạt động cơ hội, nói chung là không nên. Lý do là trung gian Set; mặc dù nó được "hỗ trợ bởi bản đồ", dường như không có sự bảo đảm rõ ràng rằng nó sẽ lặp lại theo bất kỳ thứ tự cụ thể nào. Vì vậy, các mảng quan trọng và mục nhập có thể không theo thứ tự giống nhau, đó là một thảm họa chắc chắn!

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