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:
Guide to the Java Queue Interface
Guide to Character Encoding
Stack Memory and Heap Space in Java
Java Program to Implement Slicker Algorithm that avoids Triangulation to Find Area of a Polygon
OAuth2 for a Spring REST API – Handle the Refresh Token in Angular
Java Web Services – JAX-WS – SOAP
Introduction to Using FreeMarker in Spring MVC
CyclicBarrier in Java
Java Program to Find the Connected Components of an UnDirected Graph
Using Spring ResponseEntity to Manipulate the HTTP Response
Lớp Collectors trong Java 8
Java Program to Check whether Directed Graph is Connected using DFS
Check If a String Is Numeric in Java
Adding Shutdown Hooks for JVM Applications
Guide to Guava Table
Prevent Brute Force Authentication Attempts with Spring Security
Quick Guide to Spring Bean Scopes
Từ khóa this và super trong Java
Spring Boot - Batch Service
Spring RestTemplate Error Handling
Java Program to Generate N Number of Passwords of Length M Each
Java Program to Implement vector
Checking for Empty or Blank Strings in Java
Convert Character Array to String in Java
Java Program to Implement CountMinSketch
Java Program to Implement Brent Cycle Algorithm
Getting a File’s Mime Type in Java
Iterating over Enum Values in Java
Sort a HashMap in Java
Java Program to Check Whether an Undirected Graph Contains a Eulerian Cycle
Command-Line Arguments in Java
Performance Difference Between save() and saveAll() in Spring Data