Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

จะทำให้คอลเลกชันอ่านอย่างเดียวใน java ได้อย่างไร?


คลาส Collections ของ java.util วิธีการแพ็กเกจที่ทำงานเฉพาะกับคอลเล็กชัน วิธีการเหล่านี้มีการดำเนินการเพิ่มเติมต่างๆ ที่เกี่ยวข้องกับอัลกอริธึมที่หลากหลาย

คลาสนี้มีรูปแบบที่แตกต่างกันของวิธีการ unmodifiable() ดังที่แสดงด้านล่าง −

Sr.No วิธีการ &คำอธิบาย
1 สแตติก คอลเลกชั่น unmodifiableCollection(Collection c)
เมธอดนี้ยอมรับอ็อบเจกต์คอลเลกชันใดๆ และส่งคืนมุมมองที่ไม่สามารถแก้ไขได้ของคอลเล็กชันที่ระบุ
2 รายการ คงที่ unmodifiableList(รายการ)
เมธอดนี้ยอมรับอ็อบเจ็กต์ของอินเทอร์เฟซ List และส่งคืนมุมมองที่ไม่สามารถแก้ไขได้
3 แผนที่ คงที่ unmodifiableMap(แผนที่ ม.)
เมธอดนี้ยอมรับอ็อบเจ็กต์ของอินเทอร์เฟซแผนที่และส่งคืนมุมมองที่ไม่สามารถแก้ไขได้
4 คงที่ Set unmodifiableSet(Set s)
เมธอดนี้ยอมรับอ็อบเจ็กต์ของอินเทอร์เฟซ Set และส่งคืนมุมมองที่ไม่สามารถแก้ไขได้
5 คงที่ SortedMap unmodifiableSortedMap(SortedMap ม.)
เมธอดนี้ยอมรับอ็อบเจ็กต์ของอินเทอร์เฟซ SortedMap และส่งคืนมุมมองที่ไม่สามารถแก้ไขได้
6 คงที่ SortedSet unmodifiableSortedSet(SortedSet s)
เมธอดนี้ยอมรับอ็อบเจ็กต์ของอินเทอร์เฟซ SortedSet และส่งคืนมุมมองที่ไม่สามารถแก้ไขได้ของชุดที่เรียงลำดับที่ระบุ

คุณสามารถสร้างวัตถุคอลเลกชันแบบอ่านอย่างเดียวได้โดยใช้วิธีใดวิธีหนึ่งที่เกี่ยวข้องกับคอลเลกชัน

ตัวอย่าง

โปรแกรม Java ที่ตามมาจะสร้างวัตถุ ArrayList เพิ่มองค์ประกอบเข้าไป แปลงเป็นวัตถุ List แบบอ่านอย่างเดียว

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");
   }
}

ข้อยกเว้น

[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)

เมื่อคุณดึงข้อมูลมุมมองแบบอ่านอย่างเดียวของวัตถุ List แล้ว คุณจะไม่สามารถแก้ไขเนื้อหาได้ กล่าวคือ คุณไม่สามารถเพิ่มหรือลบองค์ประกอบจากวัตถุนั้นโดยตรงหรือใช้วัตถุ Iterator หากคุณทำเช่นนั้น UnsupportedOperationException จะได้รับการเลี้ยงดู