Trong bài này, chúng ta sẽ tìm hiểu về class Vector và cách sử dụng nó. Chúng ta cũng sẽ tìm hiểu nó khác với class ArrayList như thế nào và tại sao chúng ta nên sử dụng ArrayList thay vì sử dụng Class Vector.
Class Vector triển khai List interface cho phép chúng ta tạo mảng động tương tự như ArrayList class.
Nội dung chính
1. Class Vector và class ArrayList trong Java
Trong Java, cả hai class ArrayList và Vector triển khai List interface và cung cấp các chức năng giống nhau. Tuy nhiên, có một số điểm khác biệt giữa chúng.
Class Vector đồng bộ từng toán tử một. Điều này có nghĩa là bất cứ khi nào chúng ta muốn thực hiện toán tử trên các vector, class Vector sẽ tự động áp dụng khóa cho thao tác đó.
Đó là bởi vì khi một luồng đang truy cập vào một vector, đồng thời một luồng khác cố gắng truy cập vào nó, một exception tên ConcurrentModificationException sẽ được tạo ra. Do đó, việc sử dụng khóa một cách liên tục cho mỗi toán tử này làm cho vector kém hiệu quả hơn.
Tuy nhiên, trong ArrayList, các phương thức không được đồng bộ hóa. Thay vào đó, nó sử dụng hàm Collections.synchronizedList() để đồng bộ hóa toàn bộ danh sách.
Lưu ý: Nên sử dụng ArrayList thay cho Vector vì vector không phải là một luồng an toàn và nó kém hiệu quả.
2. Tạo một Vector
Sau đây là cách chúng ta có thể tạo các vector trong Java.
Vector<Type> vector = new Vector<>();
Ở đây, Type là kiểu dữ liệu của danh sách liên kết. Ví dụ,
// create Integer type linked list
Vector<Integer> vector= new Vector<>();
// create String type linked list
Vector<String> vector= new Vector<>();
3. Hàm của Vector
Class Vector cũng triển khai mảng động trong List interface(tương tự như class ArrayList). Một số hàm Vector là:
4. Thêm phần tử vào Vector
- add(element) – thêm một phần tử vào vector
- add(index, element) – thêm một phần tử vào vị trí đã chỉ định
- addAll(vector) – thêm tất cả các phần tử của vector này vào một vector khác
Ví dụ,
/**
* Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
*
* @author cafedevn
* Contact: cafedevn@gmail.com
* Fanpage: https://www.facebook.com/cafedevn
* Instagram: https://instagram.com/cafedevn
* Twitter: https://twitter.com/CafedeVn
* Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/
import java.util.Vector;
class Main {
public static void main(String[] args) {
Vector<String> mammals= new Vector<>();
// Using the add() method
mammals.add("Dog");
mammals.add("Horse");
// Using index number
mammals.add(2, "Cat");
System.out.println("Vector: " + mammals);
// Using addAll()
Vector<String> animals = new Vector<>();
animals.add("Crocodile");
animals.addAll(mammals);
System.out.println("New Vector: " + animals);
}
}
Kết quả
Vector: [Dog, Horse, Cat]
New Vector: [Crocodile, Dog, Horse, Cat]
5. Truy cập tới các phần tử
- get(index) – trả về một phần tử được chỉ định bởi chỉ số
- iterator() – trả về một đối tượng lặp để truy cập các phần tử của vector một cách tuần tự
Ví dụ,
/**
* Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
*
* @author cafedevn
* Contact: cafedevn@gmail.com
* Fanpage: https://www.facebook.com/cafedevn
* Instagram: https://instagram.com/cafedevn
* Twitter: https://twitter.com/CafedeVn
* Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/
import java.util.Iterator;
import java.util.Vector;
class Main {
public static void main(String[] args) {
Vector<String> animals= new Vector<>();
animals.add("Dog");
animals.add("Horse");
animals.add("Cat");
// Using get()
String element = animals.get(2);
System.out.println("Element at index 2: " + element);
// Using iterator()
Iterator<String> iterate = animals.iterator();
System.out.print("Vector: ");
while(iterate.hasNext()) {
System.out.print(iterate.next());
System.out.print(", ");
}
}
}
Kết quả
Element at index 2: Cat
Vector: Dog, Horse, Cat,
6. Loại bỏ phần tử trong Vector
- remove(index) – loại bỏ một phần tử từ vị trí được chỉ định
- removeAll() – loại bỏ tất cả các phần tử
- clear()- loại bỏ tất cả các phần tử. Hàm này hiệu quả hơn hàm removeAll()
Ví dụ,
/**
* Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
*
* @author cafedevn
* Contact: cafedevn@gmail.com
* Fanpage: https://www.facebook.com/cafedevn
* Instagram: https://instagram.com/cafedevn
* Twitter: https://twitter.com/CafedeVn
* Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/
import java.util.Vector;
class Main {
public static void main(String[] args) {
Vector<String> animals= new Vector<>();
animals.add("Dog");
animals.add("Horse");
animals.add("Cat");
System.out.println("Initial Vector: " + animals);
// Using remove()
String element = animals.remove(1);
System.out.println("Removed Element: " + element);
System.out.println("New Vector: " + animals);
// Using clear()
animals.clear();
System.out.println("Vector after clear(): " + animals);
}
}
Kết quả
Initial Vector: [Dog, Horse, Cat]
Removed Element: Horse
New Vector: [Dog, Cat]
Vector after clear(): []
7. Các hàm khác liên quan đến Vector
Hàm | Mô tả |
set() | thay đổi một phần tử của vector |
size() | trả về kích cỡ của vector |
toArray() | chuyển đổi vector thành một mảng |
toString() | chuyển đổi vector thành một chuỗi |
contains() | tìm kiếm một vector từ phần tử được chỉ định và trả về kết quả boolean nếu tìm thấy phần tử đó |