Cả hai lớp ArrayList và Vector đều implements từ interface List. Cả 2 lớp đều sử dụng một mảng động, có thể thay đổi kích thước, để lưu trữ các phần tử. Chúng đều là một phần của Java Collections Framework. Bài viết này sẽ nói về các điểm khác nhau của 2 lớp này. Show
2. Vậy khi nào sử dụng ArrayList hoặc Vector
3. Ví dụ3.1. Duyệt ArrayList sử dụng IteratorArrayListExample package com.icancodeit.java.collections.list; import java.util.ArrayList; import java.util.Iterator; public class ArrayListExample { public static void main(String[] args) { }
}Kết quả 3.2. Duyệt Vector sử dụng EnumerationVectorExample package com.icancodeit.java.collections.list; import java.util.Enumeration; import java.util.Vector; public class VectorExample { public static void main(String[] args) { }
}Kết quả 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ó. |