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

Arraylist vs Vector

Một danh sách mảng có thể được xem như là một mảng động, có thể tăng 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 anh ấy / cô ấy đang xác định nó. Vector cũng có thể được xem như là một mảng có thể tăng kích thước. Các vectơ có thể được phân bổ dễ dàng và có thể được sử dụng khi không biết kích thước lưu trữ yêu cầu cho đến khi chạy.

Một danh sách mảng là gì?

Một danh sách mảng có thể được xem như là một mảng động, có thể tăng kích thước. Do đó, danh sách mảng là lý tưởng để được sử dụng trong tình huống mà bạn không biết kích thước của các yếu tố cần thiết tại thời điểm khai báo. Trong Java, danh sách mảng chỉ có thể giữ các đối tượng, chúng không thể giữ 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 với 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 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 qua các vòng lặp foreach, iterators hoặc đơ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 Khung sưu tập Java.

Vector là gì?

Vector cũng là một mảng có thể tăng kích thước. Các vectơ có thể được phân bổ dễ dàng và có thể được sử dụng khi kích thước lưu trữ yêu cầu không được biết cho đến khi 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. Các vectơ được cung cấp các phương thức để thêm các đối tượng, xóa các đối tượng và tìm kiếm các đối tượng. Tương tự như danh sách mảng trong java, các vectơ có thể được duyệt qua các vòng lặp foreach, các vòng lặp hoặc đơn giản là sử dụng các chỉ mục. Khi nói đến Java, các vectơ đã được đưa vào kể từ phiên bản đầu tiên của Java.

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 đồng bộ. Do đó, 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 là luồng an toàn). Nhưng đồng bộ hóa trong các vectơ sẽ làm giảm hiệu suất. Do đó, sẽ không phải là một ý tưởng tốt khi sử dụng vectơ trong một môi trường luồng đơn. Trong nội bộ, cả danh sách mảng và vectơ đều sử dụng mảng để giữ 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 của nó thêm 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 thay đổi kích thước không cần thiết của mảng bên trong. Trong trường hợp tốc độ tăng trưởng của dữ liệu được biết đến, 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.