Mảng động trong Java là gì?



Mảng động trong Java là một loại mảng có cải tiến rất lớn để tự động thay đổi kích thước. Hạn chế duy nhất của mảng là nó có kích thước cố định.

Mảng trong là các cấu trúc dữ liệu đồng nhất được thực hiện trong Java như các đối tượng. Mảng lưu trữ một hoặc nhiều giá trị của một kiểu dữ liệu cụ thể và cung cấp quyền truy cập được lập chỉ mục để lưu trữ giống nhau. Một phần tử cụ thể trong một mảng được truy cập bởi chỉ mục của nó. Trong bài viết này, chúng ta sẽ thảo luận về mảng động trong Java theo trình tự sau:

Giới thiệu về mảng động trong Java

Mảng động là một loại mảng như vậy với một cải tiến lớn để tự động thay đổi kích thước. Hạn chế duy nhất của mảng là nó có kích thước cố định. Điều này có nghĩa là bạn chỉ có thể chỉ định số phần tử mà mảng của bạn có thể giữ trước thời hạn. Mặt khác, các mảng động có thể mở rộng khi chúng tôi thêm nhiều phần tử hơn trong thời gian thực. Do đó, người viết mã không cần xác định kích thước của mảng trước thời hạn. Nó cũng có một số điểm mạnh hơn:





nạp chồng phương thức và ghi đè phương thức trong java
  • Tra cứu nhanh . Tương tự như mảng, khi truy xuất phần tử tại một chỉ mục nhất định, mất O (1) thời gian.



  • Kích thước thay đổi . Chúng ta có thể chèn bao nhiêu phần tử tùy thích và một mảng động theo đó sẽ mở rộng để giữ chúng.

  • Thân thiện với bộ nhớ cache . Tương tự như mảng, mảng động có thể đặt các mục bên cạnh nhau trong bộ nhớ, do đó sử dụng hiệu quả bộ nhớ đệm.



Có một số nhược điểm khi sử dụng mảng động trong mã của chúng tôi. Mặc dù, chúng tôi sử dụng mảng động nhiều hơn bất cứ thứ gì trong hầu hết các ứng dụng, nhưng có một số trường hợp chúng không trở thành lựa chọn ưu tiên nhất do những hạn chế của nó.

  • Trường hợp xấu nhất chậm khắc phục . Thông thường, trong khi việc thêm một phần tử mới vào cuối một mảng động, nó sẽ mất O (1) tại một trường hợp. Tuy nhiên, nếu mảng động không có thêm chỉ số nào cho một mục mới, thì nó sẽ cần phải mở rộng, mất O (n) tại một thời điểm.

  • Chèn và xóa tốn kém. Tương tự như mảng, các phần tử được lưu trữ liền kề nhau. Vì vậy, trong khi thêm hoặc xóa một mục ở trung tâm của mảng, nó yêu cầu đẩy các phần tử khác, mất O (n) tại một thời điểm.

Các sơ đồ dưới đây cho thấy cách các mảng hoạt động trong thời gian thực và mô tả cách các phần tử được xếp chồng lên nhau. Nó cũng cho thấy các hướng dẫn thay đổi như thế nào đối với trường hợp trung bình và trường hợp xấu nhất của các hàm mảng.

mảng - mảng động trong java - edureka

Kích thước so với công suất

Khi chúng ta khởi tạo một mảng động, việc triển khai mảng động sẽ tạo ra một mảng có kích thước cố định. Kích thước ban đầu tương ứng với việc thực hiện. Ví dụ: chúng ta hãy tạo mảng triển khai để sử dụng 10 chỉ số. Bây giờ chúng ta nối bốn mục vào mảng động của chúng ta. Bây giờ, mảng động của chúng ta có độ dài là bốn. Tuy nhiên, mảng cơ bản của chúng ta có độ dài là 10. Do đó, chúng ta có thể nói rằng kích thước mảng động là 4 và dung lượng của nó là 10. Mảng động lưu trữ một Chỉ mục cuối cụ thể để theo dõi điểm kết thúc của mảng động và điểm bắt đầu điểm từ nơi bắt đầu công suất bổ sung.

giá trị mặc định của char trong java

Nhân đôi ứng dụng

Có thể có trường hợp chúng tôi cố gắng nối một mục vào một mảng mà dung lượng đã đầy. Do đó, để tạo mảng động trong phòng sẽ tự động tạo mảng mới, lớn hơn và cơ bản. Thông thường, nó trở nên lớn gấp đôi để xử lý bất kỳ sự bổ sung mới nào, điều mà nó không dự đoán trước đó. Do đó, việc sao chép từng mục không tốn thời gian. Bất cứ khi nào nối một mục vào mảng động của chúng tôi sẽ tự động tạo ra một mảng bên dưới có kích thước kép mới, việc nối thêm không mất thời gian.

Xóa một phần tử

Trong khi xóa một phần tử khỏi một mảng, phương thức “remove ()” mặc định sẽ xóa một phần tử ở cuối và tự động lưu trữ số 0 ở chỉ mục cuối cùng. Nó cũng sẽ xóa các phần tử tại một chỉ mục cụ thể bằng cách gọi phương thức removeAt (i) trong đó “I” là chỉ mục. Phương thức removeAt (i) dịch chuyển tất cả các phần tử bên phải ở phía bên trái khỏi chỉ mục đã cho.

Thay đổi kích thước một mảng

Khi mảng không có dữ liệu ở phía bên phải của mảng mà chiếm bộ nhớ không cần thiết, phương thức srinkSize () sẽ giải phóng thêm bộ nhớ. Khi tất cả các vị trí được sử dụng và các phần tử bổ sung được thêm vào, mảng có kích thước cố định bên dưới phải tăng kích thước. Việc thay đổi kích thước thực tế rất tốn kém, vì chúng tôi phải phân bổ một mảng lớn hơn và sao chép chuyển tiếp tất cả các phần tử từ một mảng mà bạn đã phát triển quá mức trước khi cuối cùng nó có thể thêm một mục mới.

Dưới đây là ví dụ về chương trình mà kích thước mảng trở nên đầy đủ và các phần tử mới được sao chép sang một mảng kích thước kép mới. Phần tử là một phần tử chuỗi được gọi là “Mahavir” là phần bổ sung cho mảng kích thước 3 đã đầy đủ.

import java.util.ArrayList import java.util.Arrays import java.util.Scanner public class AddItemsDynamently {public static void main (String args []) {Scanner sc = new Scanner (System.in) System.out.println (' Nhập kích thước của mảng :: ') int size = sc.nextInt () String myArray [] = new String [size] System.out.println (' Nhập các phần tử của mảng (Strings) :: ') for (int tôi = 0 tôi

Đầu ra:

Với điều này, chúng ta đến phần cuối của Mảng động trong Java. Tôi hy vọng bạn có ý tưởng về cách làm việc với mảng động.

Kiểm tra của Edureka, một công ty học trực tuyến đáng tin cậy với mạng lưới hơn 250.000 người học hài lòng trải dài trên toàn cầu. Khóa đào tạo và cấp chứng chỉ về Java J2EE và SOA của Edureka được thiết kế cho sinh viên và các chuyên gia muốn trở thành Nhà phát triển Java. Khóa học được thiết kế để cung cấp cho bạn khởi đầu về lập trình Java và đào tạo bạn về cả khái niệm Java cốt lõi và nâng cao cùng với các khung Java khác nhau như Hibernate & Spring.

Có một câu hỏi cho chúng tôi? Vui lòng đề cập đến nó trong phần nhận xét của blog “Mảng động trong Java” này và chúng tôi sẽ liên hệ lại với bạn trong thời gian sớm nhất.