Table of Contents
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
| ArrayList | Vector |
| 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:
Java – Write to File
REST Web service: Upload và Download file với Jersey 2.x
Java Program to Implement the Hill Cypher
Java Program to Implement Booth Algorithm
Request Method Not Supported (405) in Spring
Java Program to Implement Branch and Bound Method to Perform a Combinatorial Search
Overview of the java.util.concurrent
Tính trừu tượng (Abstraction) trong Java
Spring Security Basic Authentication
Guide to PriorityBlockingQueue in Java
Giới thiệu Design Patterns
The Difference Between Collection.stream().forEach() and Collection.forEach()
How to Store Duplicate Keys in a Map in Java?
String Operations with Java Streams
ETags for REST with Spring
Converting Between a List and a Set in Java
A Guide to Spring Cloud Netflix – Hystrix
Java Program to Implement the Program Used in grep/egrep/fgrep
The XOR Operator in Java
Java Program to Sort an Array of 10 Elements Using Heap Sort Algorithm
Display Auto-Configuration Report in Spring Boot
LinkedHashSet trong java
Dockerizing a Spring Boot Application
Recommended Package Structure of a Spring Boot Project
Java Program to Implement Ford–Fulkerson Algorithm
Java Program to Implement Leftist Heap
Java Program to Check if a Matrix is Invertible
Hướng dẫn kết nối cơ sở dữ liệu với Java JDBC
Java Program to Implement LinkedHashMap API
Java Program to Implement RoleList API
Transactions with Spring and JPA
Java Program to Perform Preorder Recursive Traversal of a Given Binary Tree
