ArrayList vs Vector – Tại sao ArrayList được sử dụng nhiều hơn

Cả 2 List implementation ArrayListVector đều có các tính năng gần giống nhau với kích thước có thể tự động tăng giảm, giữ lại thứ tự insert v.v

 ArrayList<T> al = new ArrayList<T>();
 Vector<T> v = new Vector<T>(); 

Sự khác nhau giữa ArrayList và Vector

Điểm khác biệt lớn nhất giữa ArrayList và Vector chính là việc Vector được triển khai đồng bộ hóa trong khi ArrayList là bất đồng bộ. Đều này có nghĩa là tại một thời điểm nhiều hơn một thread có thể truy cập vào một ArrayList trong khi chỉ có 1 thread duy nhất được làm việc với Vector tại một thời điểm.

 

Về hiệu năng thì ArrayList nhanh hơn so với Vector bởi vì nó bất đồng bộ trong khi Vector được đồng bộ hóa các thread phải chờ nhau để truy cập vào.

Về độ co giãn kích thước thì ArrayList sẽ tăng 50% kích thước mảng hiện tại nếu số phần tử vượt quá dung lượng của nó, trong khi Vector tăng 100% – về cơ bản là tăng gấp đôi kích thước mảng hiện tại.

Về duyệt các phần tử, Vector có thể sử dụng cả Enumeration và Iterator để duyệt qua các phần tử của vector trong khi ArrayList chỉ có thể sử dụng Iterator để duyệt.

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) {
        // creating an ArrayList 
        ArrayList<String> al = new ArrayList<String>();

        // adding object to arraylist 
        al.add("Deft");
        al.add("Blog");

        // traversing elements using Iterator' 
        System.out.println("ArrayList elements are:");
        Iterator it = al.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }

        // creating Vector 
        Vector<String> v = new Vector<String>();
        v.addElement("Practice");
        v.addElement("quiz");
        v.addElement("code");

        // traversing elements using Enumeration 
        System.out.println("\nVector elements are:");
        Enumeration e = v.elements();
        while (e.hasMoreElements())
            System.out.println(e.nextElement());
    }
} 

Output

ArrayList elements are:
Deft
Blog

Vector elements are:
Practice
quiz
code

Lựa chọn giữa ArrayList và Vector

ArrayList không được đồng bộ hóa và không an toàn cho các thread, trong khi Vectors thì có. Chỉ một thread có thể gọi các phương thức trên Vector tại một thời điểm, điều này hơi tốn kém, nhưng hữu ích khi an toàn là mối quan tâm. Do đó, trong trường hợp đơn luồng, ArrayList là lựa chọn hiển nhiên, nhưng khi liên quan đến đa luồng, các vector thường được ưu tiên hơn.

Nếu chúng ta không biết mình sẽ có bao nhiêu dữ liệu, nhưng biết phạm vi mỗi lần kích thước dữ liệu của nó tăng, thì Vector có lợi thế hơn, vì chúng ta có thể đặt giá trị gia tăng trong vector.

ArrayList mới hơn và nhanh hơn. Nếu chúng tôi không có bất kỳ yêu cầu rõ ràng nào để sử dụng một trong hai điều trên, chúng ta sẽ sử dụng ArrayList trên vector.

Nguồn

https://www.geeksforgeeks.org/vector-vs-arraylist-java/

0 0 votes
Article Rating
Subscribe
Notify of
guest
2 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments
2
0
Would love your thoughts, please comment.x
()
x