ArrayList vs Vector
Một vectơ thực hiện các mảng có thể tăng / thu hẹp khi chạy khi một số phần tử được thêm hoặc xóa khỏi nó. Các yếu 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à công suất, đặc trưng cho việc quản lý lưu trữ vector. Nó thực hiện bốn giao diện:
* Danh sách
* Truy cập ngẫu nhiên
* Clonable
* Giao diện nối tiếp
ArrayList, giống như các vectơ, cũng thực hiện bốn giao diện. Một lần nữa, giống như các 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 trường gọi là dung lượng có kích thước lớn bằng kích thước của ArrayList.
Cả vectơ và ArrayList đều tốt cho việc truy xuất các phần tử từ bất kỳ vị trí nào và cũng để chèn hoặc xóa các phần tử từ cuối lớp container.
Từ phối cảnh API, cả vectơ cũng như ArrayList đều rất giống nhau. Vì vậy, chính xác nằm ở đâu 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ộ hóa: Các vectơ được đồng bộ hóa nhưng ArrayList thì không. Nếu bạn thêm hoặc xóa các phần tử từ mộ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 luồng cần phải đồng bộ hóa bên ngoài danh sách. Nói tóm lại, nội dung vectơ là an toàn luồng trong khi ArrayList thì không. Nếu yêu cầu không đề cập đến bộ sưu tập an toàn luồng, thì người ta nên chọn ArrayList khi đồng bộ hóa đạt hiệu suất. ArrayLists không được đồng bộ hóa rất nhanh.
2. Tăng trưởng dữ liệu: Cả hai phần tử ArrayList và vector được lưu trữ dưới dạng mảng, nhưng vectơ có kích thước mặc định là 10 và ArrayList không có kích thước mặc định. Khi một người thêm một phần tử vào một ArrayList hoặc vector, có khả năng một trong hai lớp có thể hết phòng. Trong trường hợp như vậy, theo mặc định, Vector nhân đôi kích thước của nó trong khi kích thước ArrayList tăng thêm 50%. Bạn có thể đặt giá trị tăng trong trường hợp vectơ không thể có cho ArrayList.
3. Chuyển đổi các phần tử: ArrayList có một lợi thế ở đây khi bạn có thể truy cập các phần tử của nó bằng cách sử dụng một chỉ mục. Trong trường hợp vectơ, bạn cần tạo một trình vòng lặp để duyệt qua các phần tử của nó.
Tóm lược:
1.Nếu lớp container được sửa đổi bởi một luồng hoặc một biến cục bộ, thì bạn nên sử dụng ArrayList.
2.Khi lớp container được truy cập bởi nhiều luồng, sau đó sử dụng vectơ nếu không bạn sẽ phải thực hiện đồng bộ hóa thủ công.
3. Chúng tôi có thể chỉ định kích thước gia tăng với vectơ và với ArrayList, chúng tôi không thể.
4. Một vectơ được đồng bộ hóa và một ArrayList không.
5. Một vector có thể tăng kích thước lên gấp đôi; ArrayList có thể tăng nó thêm 50%.