Sự khác nhau giữa Vector và ArrayList

Sự khác biệt giữa Arraylist và Vector

Sự khác nhau giữa Vector và ArrayList
Sự khác biệt giữa Arraylist và Vector - Công Nghệ

NộI Dung:

Arraylist vs Vector

Danh sách mảng có thể được coi là một mảng động, có thể phát triển về kích thước. Vì lý do này, lập trình viên không cần biết kích thước của danh sách mảng khi họ định nghĩa nó. Vector cũng có thể được xem như một mảng có thể phát triển về kích thước. Các vectơ có thể được cấp phát dễ dàng và có thể được sử dụng khi không biết kích thước yêu cầu của bộ nhớ cho đến thời gian chạy.

Arraylist là gì?

Danh sách mảng có thể được coi là một mảng động, có thể phát triển về kích thước. Do đó, danh sách mảng là lý tưởng để được sử dụng trong trường hợp bạn không biết kích thước của các phần tử được yêu cầu tại thời điểm khai báo. Trong Java, danh sách mảng chỉ có thể chứa các đối tượng, chúng không thể chứa các kiểu nguyên thủy trực tiếp (bạn có thể đặt các kiểu nguyên thủy bên trong một đối tượng hoặc sử dụng các lớp bao bọc của các kiểu nguyên thủy). Nói chung, danh sách mảng được cung cấp các phương thức để thực hiện chèn, xóa và tìm kiếm. Độ phức tạp thời gian của việc truy cập một phần tử là o (1), trong khi việc chèn và xóa có độ phức tạp thời gian là o (n). Trong Java, danh sách mảng có thể được duyệt bằng cách sử dụng vòng lặp foreach, trình vòng lặp hoặc chỉ đơn giản là sử dụng các chỉ mục. Trong Java, danh sách mảng đã được giới thiệu từ phiên bản 1.2 và nó là một phần của Java Collections Framework.


Vector là gì?

Vector cũng là một mảng có thể phát triển về kích thước. Các vectơ có thể được cấp phát dễ dàng và có thể được sử dụng khi không biết kích thước yêu cầu của bộ lưu trữ cho đến thời gian chạy. Các vectơ cũng chỉ có thể giữ các đối tượng và không thể giữ các kiểu nguyên thủy. Các vectơ được đồng bộ hóa, do đó có thể được sử dụng một cách an toàn trong môi trường đa luồng. Vectơ được cung cấp các phương thức thêm đối tượng, xóa đối tượng và tìm kiếm đối tượng. Tương tự như danh sách mảng trong java, vectơ có thể được duyệt bằng cách sử dụng vòng lặp foreach, trình vòng lặp hoặc chỉ đơn giản là sử dụng các chỉ mục. Khi nói đến Java, vectơ đã được bao gồm kể từ phiên bản Java đầu tiên.

Sự khác biệt giữa Arraylist và Vector là gì?

Mặc dù cả danh sách mảng và vectơ đều rất giống với mảng động có thể tăng kích thước, chúng có một số khác biệt quan trọng. Sự khác biệt chính giữa danh sách mảng và vectơ là các vectơ được đồng bộ hóa trong khi danh sách mảng không được đồng bộ hóa. Do đó việc sử dụng danh sách mảng trong môi trường đa luồng sẽ không phù hợp, trong khi vectơ có thể được sử dụng an toàn trong môi trường đa luồng (vì chúng an toàn cho luồng). Nhưng đồng bộ hóa trong vectơ sẽ gây ra giảm hiệu suất. Do đó, sẽ không phải là một ý kiến ​​hay nếu sử dụng vectơ trong một môi trường luồng đơn. Bên trong, cả danh sách mảng và vectơ đều sử dụng mảng để chứa các đối tượng. Khi không gian hiện tại không đủ, vectơ sẽ tăng gấp đôi kích thước của mảng bên trong của nó, trong khi danh sách mảng tăng kích thước của mảng bên trong lên 50%. Nhưng khi sử dụng cả danh sách mảng và vectơ, bằng cách cung cấp dung lượng ban đầu phù hợp, có thể tránh được việc thay đổi kích thước không cần thiết của mảng bên trong. Trong tình huống mà tốc độ tăng trưởng của dữ liệu đã được biết trước, sử dụng vectơ sẽ phù hợp hơn vì giá trị gia tăng của vectơ có thể được xác định.