Sự khác biệt giữa ArrayList và Vector trong Java
NộI Dung
Cả ArrayList và Vector đều là các lớp trong hệ thống phân cấp Collection Framework. ArrayList và Vector, cả hai đều được sử dụng để tạo ra một mảng động của các đối tượng trong đó mảng có thể tăng kích thước theo yêu cầu. Có hai điểm khác biệt cơ bản để phân biệt ArrayList và Vector là Vector thuộc về các lớp Legacy mà sau này được tổ chức lại để hỗ trợ các lớp bộ sưu tập trong khi đó, ArrayList là lớp bộ sưu tập tiêu chuẩn. Một sự khác biệt quan trọng khác là ArrayList không được đồng bộ hóa; Vector được đồng bộ hóa.
Hãy để chúng tôi nghiên cứu một số khác biệt với sự giúp đỡ của Biểu đồ so sánh được hiển thị dưới đây.
- Biểu đồ so sánh
- Định nghĩa
- Sự khác biệt chính
- Điểm tương đồng
- Phần kết luận
Biểu đồ so sánh
Cơ sở để so sánh | Lập danh sách | Vectơ |
---|---|---|
Căn bản | Lớp ArrayList không được đồng bộ hóa. | Lớp Vector được đồng bộ hóa. |
Lớp kế thừa | ArrayList là một lớp Collection tiêu chuẩn. | Vector là một lớp kế thừa, được thiết kế lại để hỗ trợ lớp bộ sưu tập. |
Tuyên bố lớp | lớp ArrayList | lớp Vector |
Tái phân bổ | Khi không được chỉ định, một ArrayList được tăng thêm một nửa kích thước của nó. | Khi không được chỉ định, một vectơ được tăng lên gấp đôi kích thước của nó. |
Hiệu suất | Vì ArrayList không được đồng bộ hóa, nó hoạt động nhanh hơn Vector. | Khi Vector được đồng bộ hóa, nó hoạt động chậm hơn ArrayList. |
Bảng liệt kê / vòng lặp | ArrayList sử dụng giao diện Iterator để duyệt qua các đối tượng được lưu trữ trong ArrayList. | Vector sử dụng Enumutions cũng như giao diện Iterator để duyệt qua các đối tượng được lưu trữ trong vectơ. |
Định nghĩa của ArrayList
ArrayList thuộc danh sách các lớp bộ sưu tập tiêu chuẩn. Lớp ArrayList được định nghĩa bên trong java.util gói, nó mở rộng Tóm tắt lớp cũng là một lớp bộ sưu tập tiêu chuẩn, và nó cũng thực hiện Danh sách, một giao diện được xác định trong Giao diện Bộ sưu tập. Trong Java, một mảng tiêu chuẩn luôn có độ dài cố định. Điều đó có nghĩa là một khi được tạo ra; nó không tự động tăng trưởng hoặc thu nhỏ kích thước. Vì vậy, bạn nên có kiến thức trước về độ dài của mảng bạn đang sử dụng. Nhưng, đôi khi có thể xảy ra rằng độ dài cần thiết được tiết lộ trong thời gian chạy vì vậy, để xử lý loại tình huống này java đã giới thiệu ArrayList.
ArrayList là lớp được sử dụng để tạo động của một mảng chứa các tham chiếu đến các đối tượng. Mảng này có thể tăng kích thước theo yêu cầu. Khai báo lớp như sau:
lớp ArrayList Ở đây, E chỉ định loại đối tượng mà một mảng sẽ giữ. Mảng được tạo có chiều dài thay đổi, và nó tăng và giảm kích thước khi các đối tượng được thêm hoặc xóa khỏi danh sách. Điều đó có nghĩa là ArrayList không được đồng bộ hóa, nhiều hơn một luồng có thể hoạt động trên mảng cùng một lúc. Ví dụ, nếu một luồng đang thêm một tham chiếu đối tượng vào mảng và một luồng khác sẽ xóa một tham chiếu đối tượng khỏi cùng một mảng cùng một lúc. Việc tạo ra một mảng động bằng cách sử dụng lớp ArrayList: Lập danh sách Trong đoạn mã trên, bạn có thể thấy rằng; Tôi đã tạo ra một mảng các đối tượng của kiểu chuỗi. Tôi đã thêm một số đối tượng vào mảng S1 bằng phương thức add () và sau đó xóa một số đối tượng bằng phương thức remove (). Bạn có thể quan sát nếu bạn không chỉ định kích thước ban đầu của mảng thì nó sẽ có chiều dài ’0. Như bạn có thể thấy mảng phát triển và thu nhỏ kích thước khi bạn thêm và xóa các phần tử. Vector là một lớp Legacy được tổ chức lại để hỗ trợ lớp bộ sưu tập trong hệ thống phân cấp Bộ sưu tập Khung. Lớp vectơ cũng được định nghĩa trong java.util gói, mở rộng bởi Tóm tắt lớp và được thực hiện bởi Danh sách giao diện. Lớp Vector được khai báo như sau: lớp Vector Ở đây, E định nghĩa loại đối tượng sẽ được lưu trữ trong một mảng. Một mảng được tạo bằng lớp Vector có độ dài thay đổi. Nó tăng gấp đôi kích thước của nó nếu mức tăng không được chỉ định. Hãy hiểu về việc tạo ra mảng bằng cách sử dụng Vector. Vectơ Trong đoạn mã trên bạn có thể thấy rằng, tôi đặc biệt đề cập đến kích thước và giá trị gia tăng trong hàm tạo của Vector tương ứng, trong khi khai báo mảng của các đối tượng chuỗi. Do đó, bạn có thể quan sát rằng khi giới hạn của mảng kết thúc, nó sẽ tăng theo giá trị được cung cấp cho hàm tạo trong khi khai báo. Tôi kết luận bằng cách nói rằng việc sử dụng ArrayList tốt hơn so với sử dụng Vector vì nó hoạt động nhanh hơn và tốt hơn.Định nghĩa của Vector
Điểm tương đồng:
Phần kết luận: