Computer >> Máy Tính >  >> Lập trình >> Java

Có bao nhiêu cách để đồng bộ hóa ArrayList trong Java?


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