So sánh ArrayList và Vector trong Java

Trong các bài viết trước, tôi đã giới thiệu với các bạn ArrayList và Vector trong Java. Trong bài này, chúng ta cùng so sánh sự giống nhau và khác nhau giữa chúng.

1. Giống nhau của ArrayList và Vector

  • Cả ArrayList và Vector đều cài đặt interface List.
  • HashMap và Hashtable đều duy trì thứ tự chèn của các phần tử.

2. Khác nhau của ArrayList và Vector

ArrayListVector
ArrayList là non-synchronized.Vector là synchronized.
ArrayList là nhanh hơn vì nó là non-synchronized.Vector là chậm hơn ví nó là synchronized. Tức là, trong môi trường đa luồng, các thread giữ nó ở trong trạng thái runnable hoặc non-runnable cho đến khi thread hiện tại giải phóng đối tượng đó.
ArrayList được duyệt bởi Iterator.Vector được duyệt bởi Enumeration và Iterator.
Không thể chủ động thay đổi kích thước hiện tại của ArrayList. Kích thước ArrayList chỉ được thay đổi khi thêm hoặc xóa phần tử.Có thể chủ động thay đổi kích thướng của Vector bằng phương thức setSize().
ArrayList tăng 50% kích thước hiện tại nếu số phần tử vượt quá khả năng chứa của nó.Vector tăng 100% nghĩa là tăng gấp đôi kích thước hiện tại nếu số phần tử vượt quá khả năng chứa của nó..
Chúng ta có thể làm cho ArrayList đồng bộ bằng cách gọi phương thức: Collections.synchronizedList();Vector được đồng bộ nội bộ và không thể hủy đồng bộ hóa.
ArrayList được ưa thích trong các ứng dụng đơn luồng (single-thread). Nếu bạn muốn sử dụng HashMap trong ứng dụng đa luồng (mulit-thread), có thể thực hiện bằng cách sử dụng phương thức Collections. synchronizedList().Mặc dù Vector có để sử dụng trong các ứng dụng đa luồng (multi-thread), nhưng ngày nay nó ít được sử dụng. Bởi vì, Collections. synchronizedList() là lựa chọn tốt hơn Vector.

3. Ví dụ duyệt ArrayList sử dụng Iterator

import java.util.ArrayList;
import java.util.Iterator;
 
public class ArrayIteratorExample {
    public static void main(String args[]) {
        // creating arraylist
        ArrayList<String> arrayList = new ArrayList<String>();
 
        // adding object in arraylist
        arrayList.add("Sonoo");
        arrayList.add("Michael");
        arrayList.add("James");
        arrayList.add("Andy");
 
        // traversing elements using Iterator
        Iterator<String> itr = arrayList.iterator();
        while (itr.hasNext()) {
            System.out.println(itr.next());
        }
    }
}

Kết quả thực thi chương trình trên:

Sonoo
Michael
James
Andy

4. Ví dụ duyệt Vector sử dụng Enumeration

import java.util.Enumeration;
import java.util.Vector;
 
public class VectorEnumerationExample {
    public static void main(String args[]) {
        // creating vector
        Vector<String> vector = new Vector<String>();
 
        // adding object in vector
        vector.add("Sonoo");// method of Collection
        vector.addElement("Michael");// method of Vector
        vector.addElement("James");
        vector.add("Andy");
 
        // traversing elements using Enumeration
        Enumeration<String> e = vector.elements();
        while (e.hasMoreElements()) {
            System.out.println(e.nextElement());
        }
    }
}

Kết quả thực thi chương trình trên:

Sonoo
Michael
James
Andy

Related posts:

The Order of Tests in JUnit
Guide to CountDownLatch in Java
Java Program to Find Inverse of a Matrix
Java Program to Repeatedly Search the Same Text (such as Bible by building a Data Structure)
Tránh lỗi ConcurrentModificationException trong Java như thế nào?
Spring MVC + Thymeleaf 3.0: New Features
Java Program to Perform Inorder Non-Recursive Traversal of a Given Binary Tree
Java Program to Perform LU Decomposition of any Matrix
Spring Cloud – Tracing Services with Zipkin
Java Program to Solve Tower of Hanoi Problem using Stacks
Java Program to Implement Fibonacci Heap
Hướng dẫn Java Design Pattern – Factory Method
Java Program to Generate All Possible Combinations Out of a, b, c, d, e
Java Program to Implement Lloyd’s Algorithm
Java Program to Implement Find all Back Edges in a Graph
The Registration Process With Spring Security
Java Program to Find Transitive Closure of a Graph
Spring Boot Security Auto-Configuration
Java Program to Check whether Graph is a Bipartite using 2 Color Algorithm
Explain about URL and HTTPS protocol
Java Program to Implement Quick Hull Algorithm to Find Convex Hull
Java Program to Find Median of Elements where Elements are Stored in 2 Different Arrays
Java Program to do a Depth First Search/Traversal on a graph non-recursively
Java Program to Perform Arithmetic Operations on Numbers of Size
Hướng dẫn Java Design Pattern – Intercepting Filter
How to use the Spring FactoryBean?
Database Migrations with Flyway
Lớp HashMap trong Java
Java Program to Implement Fermat Factorization Algorithm
Java Program to Implement Selection Sort
Java Program to Implement Floyd Cycle Algorithm
Optional trong Java 8