Đề XuấT, 2024

Editor Choice

Sự khác biệt giữa Danh sách và ArrayList trong Java

List và ArrayList là các thành viên của khung Collection. Danh sách là một tập hợp các phần tử trong một chuỗi trong đó mỗi phần tử là một đối tượng và các phần tử được truy cập bởi vị trí (chỉ mục). ArrayList tạo ra một mảng động của các đối tượng tăng hoặc giảm kích thước bất cứ khi nào cần thiết. Sự khác biệt chính giữa List và ArrayList là List là một giao diện và ArrayList là một lớp. Hãy để chúng tôi nghiên cứu sự khác biệt giữa Danh sách và ArrayList với sự trợ giúp của biểu đồ so sánh được hiển thị bên dưới.

Biểu đồ so sánh

Cơ sở để so sánhDanh sáchLập danh sách
Căn bảnDanh sách là một giao diệnArrayList là một Class Collection tiêu chuẩn.
Cú phápDanh sách giao diệnlớp ArrayList
Mở rộng / Thực hiệnGiao diện danh sách mở rộng Bộ sưu tập Khung.ArrayList mở rộng AbstractList và thực hiện Giao diện danh sách.
Không gian tênSystem.Collections.Generic.Hệ thống. Bộ sưu tập.
Công việcNó được sử dụng để tạo một danh sách các yếu tố (đối tượng) được liên kết với số chỉ mục của chúng.ArrayList được sử dụng để tạo một mảng động có chứa các đối tượng.

Định nghĩa của danh sách

Danh sách là một giao diện mở rộng khung Collection . Giao diện danh sách mô tả bộ sưu tập các yếu tố được sắp xếp tuần tự. Giao diện danh sách được triển khai bởi các lớp bộ sưu tập tiêu chuẩn sau như ArrayList, LinkedList, CopyOnWriteArrayList, Vector, Stack . Giao diện danh sách có các yếu tố được liên kết với số chỉ mục của chúng. Bạn có thể truy cập một phần tử trong danh sách theo vị trí (chỉ mục) của nó trong danh sách. Một danh sách được tạo bằng giao diện Danh sách bắt đầu với chỉ mục dựa trên số không.

Ngoài các phương thức được kế thừa bởi khung công tác Collection, giao diện List cũng xác định một số phương thức của riêng nó. Các phương thức được thêm vào bởi giao diện List là, add (int, E)addAll (int, Collection) . Các phương thức này thêm một phần tử vào danh sách theo chỉ mục của chúng. Các phương thức trong danh sách có thể đưa ra một ngoại lệ như UnsupportedOperationException nếu phương thức không thể sửa đổi danh sách. Khi một đối tượng trong danh sách không tương thích với đối tượng khác trong danh sách, thì ClassCastException sẽ bị ném. Các phần tử không được phép trong danh sách nếu bạn cố gắng chèn một đối tượng null trong danh sách, NullPulumException sẽ bị ném.

Bạn có thể lấy một phần tử từ danh sách bằng phương thức get () . Bạn có thể đặt giá trị của một phần tử trong danh sách bằng phương thức set () . Bạn cũng có thể lấy danh sách con từ danh sách bằng cách sử dụng danh sách con phương thức () . Nó trở nên thuận tiện để hoạt động trên danh sách phụ thay vì danh sách.

Định nghĩa của ArrayList

Một trong các lớp Collection tiêu chuẩn là ArrayList mở rộng lớp AbstractList và cũng thực hiện giao diện List . Lớp ArrayList được sử dụng để tạo các mảng động phát triển và thu hẹp bất cứ khi nào cần thiết. Danh sách được tạo bằng lớp ArrayList không có gì ngoài mảng các đối tượng. Trong Java, mảng tiêu chuẩn có độ dài cố định, vì vậy, bạn phải biết trước kích thước của mảng. Nhưng, nó có thể là trường hợp mà bạn có thể không biết độ dài của mảng bạn cần cho đến thời gian chạy. Do đó, khung công tác Collection đã giới thiệu lớp ArrayList để khắc phục vấn đề này.

ArrayList có các hàm tạo tạo mảng với dung lượng nội bộ của nó. Mặc dù dung lượng của đối tượng của lớp ArrayList tự động tăng khi các phần tử được thêm vào mảng, nhưng bạn vẫn có thể tăng khả năng của đối tượng ArrayList theo cách thủ công bằng cách sử dụng phương thức notifyCapacity () . Tốt hơn là tăng dung lượng của mảng ban đầu thay vì phân bổ lại bộ nhớ sau này. Bởi vì việc phân bổ lại tốn kém hơn so với việc phân bổ bộ nhớ cùng một lúc.

Sự khác biệt chính giữa Danh sách và ArrayList

  1. Một trong những khác biệt quan trọng nhất giữa List và ArrayList là danh sách đó là một giao diện và ArrayList là một lớp Collection tiêu chuẩn.
  2. Giao diện List mở rộng khung Collection trong khi đó, ArrayList mở rộng Class trừu tượng và nó thực hiện các giao diện List .
  3. Không gian tên cho giao diện List là System.Collection.Generic trong khi đó, không gian tên cho ArrayList là System.Collection .
  4. Giao diện danh sách tạo ra một tập hợp các phần tử được lưu trữ theo trình tự và được xác định hoặc truy cập bằng số chỉ mục của chúng. Mặt khác, ArrayList tạo ra một mảng các đối tượng trong đó mảng có thể tự động phát triển khi được yêu cầu.

Phần kết luận:

ArrayList khắc phục vấn đề của một mảng tĩnh trong Java tiêu chuẩn, tức là mảng không thể tăng kích thước một khi nó được tạo. Khi một mảng được tạo bằng ArrayList, một mảng động được tạo có thể tăng và thu nhỏ kích thước khi cần. Lớp ArrayList tiêu chuẩn của Bộ sưu tập mở rộng giao diện Danh sách.

Top