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.

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àmMô 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ử đó

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!