An ArrayList là một lớp con của AbstractList và nó có thể được sử dụng để lưu trữ có kích thước động tập hợp các phần tử. ArrayList tăng kích thước của nó để chứa các phần tử mới và thu nhỏ kích thước khi các phần tử bị xóa, vì vậy nó được gọi là có thể thay đổi kích thước hoặc mảng động. ArrayList có thể cho phép các giá trị trùng lặp và rỗng .
Có hai cách để đồng bộ hóa ArrayList trong Java
Phương thức Collections.synchronizedList ()
Danh sách được đồng bộ hóa () được sử dụng để đồng bộ hóa các bộ sưu tập trong Java.
Cú pháp
public static List<T> synchronizedList(List<T> list)
Ví dụ
import java.util.*; public class SynchronizedListTest { public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("IND"); list.add("AUS"); list.add("WI"); list.add("NZ"); list.add("ENG"); List<String> synlist = Collections.synchronizedList(list); synchronized(synlist) { Iterator<String> itr = synlist.iterator(); while(itr.hasNext()) { String str = itr.next(); System.out.println(str); } } } }
Đầu ra
IND AUS WI NZ ENG
CopyOnWriteArrayList
CopyOnWriteArrayList sẽ tạo một danh sách các phần tử theo thứ tự của bộ sưu tập được chỉ định. Nó an toàn theo chuỗi truy cập đồng thời của ArrayList. Khi một ArrayList được sửa đổi, nó sẽ tạo ra một bản sao mới của mảng bên dưới.
Cú pháp
public class CopyOnWriteArrayList<E> extends Object implements List<E>, RandomAccess, Cloneable, Serializable
Ví dụ
import java.util.*; import java.util.concurrent.*; public class CopyOnWriteArrayListTest { public static void main(String[] args) { CopyOnWriteArrayList list = new CopyOnWriteArrayList(); list.add("Java"); list.add("Scala"); list.add("Python"); list.add("Selenium"); list.add("ServiceNow"); System.out.println("Displaying synchronized ArrayList: "); Iterator itr = list.iterator(); while(itr.hasNext()) { String str = itr.next(); System.out.println(str); } } }
Đầu ra
Displaying synchronized ArrayList: Java Scala Python Selenium ServiceNow