Hướng dẫn dùng java arrays.copy python
Trong bài viết này, bạn sẽ tìm hiểu về các cách khác nhau mà bạn có thể sao chép mảng (cả mảng một chiều và mảng hai chiều) trong Java. Show Nội dung chính
Bạn có thể sử dụng nhiều cách để sao chép mảng trong Java.
1. Sao chép mảng bằng toán tử gánHãy lấy một ví dụ,
Khi chạy chương trình, kết quả sẽ là:
Việc sử dụng cách này để sao chép mảng có vẻ rất tối ưu thế nhưng nó lại có một vấn đề. Nếu bạn thay đổi các phần tử của một mảng trong ví dụ trên, các phần tử tương ứng của mảng kia cũng bị thay đổi.
Khi bạn chạy chương trình, kết quả sẽ là:
Khi phần tử đầu tiên của mảng numbers được thay đổi thành -1, phần tử đầu tiên của mảng positiveNumbers cũng trở thành -1. Đó là bởi vì cả hai mảng đề cập đến cùng một đối tượng mảng. Cách sao chép này được gọi là shallow copy. Tuy nhiên, trong hầu hết các trường hợp, chúng ta cần sử dụng deep copy thay vì shallow copy. Một bản sao deep copy sẽ sao chép các giá trị mà các giá trị này tạo nên một đối tượng mảng mới. 2. Sử dụng cấu trúc vòng lặp để sao chép mảngHãy lấy một ví dụ:
Khi bạn chạy chương trình, kết quả sẽ là:
Ở đây, vòng lặp for được sử dụng để lặp qua từng phần tử của mảng source. Trong mỗi lần lặp, phần tử tương ứng của mảng source được sao chép vào mảng destination. Các mảng source và destination không có chung reference (cách sao chép này gọi là deep copy). Có nghĩa là, nếu các phần tử của một mảng (source hoặc destination) bị thay đổi, các phần tử tương ứng của mảng kia vẫn không thay đổi. Hàm toString () được sử dụng để chuyển đổi mảng thành chuỗi (chỉ nhằm mục đích output). Có một cách tốt hơn (so với việc sử dụng vòng lặp) để sao chép các mảng trong Java, cách đó chính là sử dụng hàm arraycopy() và hàm copyOfRange(). 3. Sao chép mảng bằng cách sử dụng hàm arraycopy ()Lớp System chứa hàm arraycopy(), hàm này cho phép ta sao chép dữ liệu từ mảng này sang mảng khác. Hàm arraycopy() vừa hiệu quả lại vừa linh hoạt. Bởi vì hàm này cho phép ta sao chép một phần xác định của mảng nguồn sang mảng đích.
Ở đây,
Hãy lấy một ví dụ:
Khi bạn chạy chương trình, kết quả sẽ là:
Lưu ý, giá trị khởi tạo mặc định của các phần tử trong môt mảng kiểu int là 0. 4. Sao chép mảng bằng cách sử dụng hàm copyOfRange ()Ngoài ra, để sao chép mảng, bạn có thể sử dụng hàm copyOfRange() được xác định trong class java.util.Arrays. Bạn không cần tạo mảng đích trước khi gọi hàm. Truy cập trang này để tìm hiểu thêm về hàm copyOfRange () . Sau đây là cách làm.
Khi bạn chạy chương trình, kết quả sẽ là:
5. Sao chép Mảng 2d bằng cách sử dụng vòng lặpSau đây là một ví dụ về việc sử dụng vòng lặp để sao chép mảng 2d không đều:
Khi bạn chạy chương trình, kết quả sẽ là:
Bạn có thể thấy, ở đây, ta đã sử dụng hàm Arrays’ deepToString(). Hàm deepToString() biểu diễn mảng đa chiều môt cách tối ưu hơn, cụ thể trong ví dụ này là mảng 2 chiều. Tìm hiểu thêm về hàm deepToString (). Bạn có thể thay thế vòng lặp bên trong của phần code trên bằng hàm System.arraycopy() hoặc hàm Arrays.copyOf() mảng trong trường hợp đối với mảng một chiều. Sau đây là cách sử dụng hàm arraycopy() để làm bài trên:
Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you! |