2011-06-30 26 views
11

Khi tôi chạy mã sau, không có gì được sao chép - tôi đang làm gì sai?Cách tốt nhất để sao chép từ mảng này sang mảng khác

Ngoài ra, đây có phải là cách tốt nhất/hiệu quả nhất để sao chép dữ liệu từ mảng này sang mảng khác không?

public class A { 
    public static void main(String args[]) { 
     int a[] = { 1, 2, 3, 4, 5, 6 }; 
     int b[] = new int[a.length]; 

     for (int i = 0; i < a.length; i++) { 
      a[i] = b[i]; 
     } 
    } 
} 
+5

er, bạn không chỉ cần làm điều đó? – zellio

+0

Bạn thấy vấn đề gì? Mã của bạn có vẻ tốt (bạn đang tìm kiếm System.arraycopy()?) – rsp

+1

@Mimi, @rsp - có một lỗi trong mã của anh ấy! –

Trả lời

18

Tôi nghĩ rằng nhiệm vụ của bạn là ngược:

a[i] = b[i];

nên là:

b[i] = a[i];

71

Có rất nhiều giải pháp:

b = Arrays.copyOf(a, a.length); 

Phân bổ mảng mới, sao chép qua các phần tử của a và trả về mảng mới.

Hoặc

b = new int[a.length]; 
System.arraycopy(a, 0, b, 0, b.length); 

Mà sao chép nội dung mảng nguồn vào một mảng đích mà bạn phân bổ cho mình.

Hoặc

b = a.clone(); 

mà hoạt động rất giống như Arrays.copyOf(). Xem this thread.

Hoặc bạn đã đăng, nếu bạn đảo ngược hướng của nhiệm vụ trong vòng lặp.

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