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

Làm cách nào để tạo một bộ sưu tập chỉ đọc trong java?

Lớp Bộ sưu tập của java.util các phương thức gói chỉ hoạt động trên các tập hợp, các phương pháp này cung cấp các hoạt động bổ sung khác nhau liên quan đến các thuật toán đa hình.

Lớp này cung cấp các biến thể khác nhau của phương thức unmodifiable () như được hiển thị bên dưới -

Sr.No Phương pháp &Mô tả
1 static Bộ sưu tập unmodifiableCollection (Bộ sưu tập c)
Phương thức này chấp nhận bất kỳ đối tượng bộ sưu tập nào và trả về một chế độ xem không thể thay đổi của bộ sưu tập được chỉ định.
2 static List unmodifiableList (Danh sách danh sách)
Phương thức này chấp nhận một đối tượng của giao diện Danh sách và trả về một chế độ xem không thể thay đổi của nó.
3 static Bản đồ unmodifiableMap (Bản đồ m)
Phương thức này chấp nhận một đối tượng của giao diện Bản đồ và trả về một chế độ xem không thể thay đổi về nó.
4 static Set unmodifiableSet (Set s)
Phương thức này chấp nhận một đối tượng của giao diện Đặt và trả về một chế độ xem không thể thay đổi về nó ..
5 static SortedMap unmodifiableSortedMap (Bản đồ đã sắp xếp m)
Phương thức này chấp nhận một đối tượng của giao diện SortedMap và trả về một chế độ xem không thể thay đổi của nó.
6 static SortedSet unmodifiableSortedSet (SortedSet s)
Phương thức này chấp nhận một đối tượng của giao diện SortedSet và trả về một chế độ xem không thể thay đổi của tập hợp được sắp xếp đã chỉ định.

Bạn có thể đặt một đối tượng bộ sưu tập ở chế độ chỉ đọc bằng cách sử dụng một trong các phương pháp liên quan đến bộ sưu tập.

Ví dụ

Chương trình Java sau tạo một đối tượng ArrayList, thêm các phần tử vào nó, chuyển đổi nó thành một đối tượng List chỉ đọc.

import java.util.Collection;
import java.util.Collections;
import java.util.Vector;
public class CollectionReadOnly {
   public static void main(String[] args) {
      //Instantiating an ArrayList object
      Vector<String> vector = new Vector<String>();
      vector.add("JavaFx");
      vector.add("Java");
      vector.add("WebGL");
      vector.add("OpenCV");
      System.out.println(vector);
      Collection<String> immutableVector = Collections.unmodifiableCollection(vector);
      System.out.println("Vector converted to read only "+immutableVector);
      immutableVector.add("CoffeeScript");
   }
}

Ngoại lệ

[JavaFx, Java, WebGL, OpenCV]
Array list converted to read only [JavaFx, Java, WebGL, OpenCV]
Exception in thread "main" java.lang.UnsupportedOperationException
   at java.util.Collections$UnmodifiableCollection.add(Unknown Source)
   at September19.CollectionReadOnly.main(CollectionReadOnly.java:20)

Khi bạn đã truy xuất chế độ xem chỉ đọc của đối tượng Danh sách, bạn không thể sửa đổi nội dung của nó, tức là bạn không thể thêm hoặc xóa các phần tử khỏi nó trực tiếp hoặc sử dụng đối tượng Iterator, nếu bạn làm như vậy thì UnsupportedOperationException sẽ được nâng lên.