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

Anonim

ArrayList vs Vector

Một vector thực hiện các mảng có thể phát triển / co lại khi chạy khi một số phần tử được thêm vào hoặc gỡ bỏ khỏi nó. Các phần tử của nó được truy cập bằng cách sử dụng một chỉ số nguyên. Hai lĩnh vực - tăng công suất và dung lượng, đặc trưng cho việc quản lý lưu trữ véc tơ. Nó thực hiện bốn giao diện:

* Danh sách

* Truy cập ngẫu nhiên

* Cloneable

Serializable giao diện

ArrayList, giống như vectơ, cũng thực hiện bốn giao diện. Một lần nữa, như vectơ, kích thước của nó có thể thay đổi trong thời gian chạy. Ngoài ra, nó có một lĩnh vực gọi là dung lượng có kích thước lớn bằng kích thước của ArrayList.

Cả hai vectơ và ArrayList đều tốt cho việc lấy ra các phần tử từ bất kỳ vị trí nào cũng như để chèn hoặc xóa các phần tử từ cuối lớp chứa.

Từ quan điểm API, cả hai vectơ cũng như ArrayList đều rất giống nhau. Vì vậy, nơi chính xác nằm sự khác biệt giữa hai? Những điểm sau đây sẽ làm sáng tỏ vấn đề này:

1. Đồng bộ: Vectors được đồng bộ nhưng ArrayList thì không. Nếu bạn thêm hoặc xóa các phần tử từ ArrayList, nó được gọi là sửa đổi cấu trúc. Khi nhiều luồng đang truy cập một ArrayList đồng thời với một khối mã sửa đổi danh sách, thì một trong số chúng cần đồng bộ hoá bên ngoài danh sách. Tóm lại, nội dung vector là an toàn cho thread, còn ArrayList thì không. Nếu yêu cầu không đề cập đến bộ sưu tập an toàn của thread, thì nên chọn ArrayList làm hiệu suất hoạt động đồng bộ. Các mảng ArrayList không đồng bộ rất nhanh.

2. Tăng trưởng dữ liệu: Cả ArrayList và các phần tử vector đều được lưu trữ dưới dạng mảng, nhưng các vectơ có kích thước mặc định là 10 và ArrayList không có kích thước mặc định. Khi người ta thêm một phần tử cho một ArrayList hoặc vector, có một cơ hội mà cả hai lớp đều có thể chạy ra khỏi phòng. Trong trường hợp này, mặc định Vector tăng gấp đôi kích thước của nó trong khi kích thước ArrayList tăng 50%. Bạn có thể đặt một giá trị gia tăng trong trường hợp vectơ mà không thể cho ArrayList.

3. Traversing các yếu tố: ArrayList có một lợi thế ở đây vì bạn có thể truy cập các yếu tố của nó bằng cách đơn giản sử dụng một chỉ mục. Trong trường hợp vectơ, bạn cần phải tạo ra một vòng lặp để đi qua các phần tử của nó.

Tóm tắt:

1. Nếu lớp thùng chứa được sửa đổi bởi một sợi đơn hoặc một số biến địa phương, thì bạn nên sử dụng một ArrayList.

2. Khi lớp lưu trữ được truy cập bởi nhiều luồng, sau đó sử dụng vectơ nếu không bạn sẽ phải làm đồng bộ thủ công.

3. Chúng ta có thể xác định kích thước tăng với vector và với ArrayList chúng ta không thể.

4. Một vector được đồng bộ và một ArrayList thì không.

5. Một vector có thể tăng kích thước bằng cách tăng gấp đôi; ArrayList có thể tăng 50%.