Từ tài liệu Khung Bộ sưu tập Java 1.6 :
Bộ sưu tập không hỗ trợ bất kỳ hoạt động sửa đổi (ví dụ như
add
,remove
vàclear
) được gọi là unmodifiable . [...] Các bộ sưu tập cũng đảm bảo rằng không có thay đổi nào trong đối tượng Bộ sưu tập sẽ được hiển thị được gọi là bất biến .
Tiêu chí thứ hai làm tôi bối rối một chút. Với bộ sưu tập đầu tiên là không thể sửa đổi và giả sử rằng tham chiếu bộ sưu tập ban đầu đã bị loại bỏ, những thay đổi được đề cập đến trong dòng thứ hai là gì? Nó có đề cập đến những thay đổi trong các phần tử được tổ chức trong bộ sưu tập tức là trạng thái của các phần tử không?
Câu hỏi thứ hai:
Để một bộ sưu tập là bất biến, làm thế nào để cung cấp các guarentees bổ sung được chỉ định? Nếu trạng thái của một phần tử trong tập hợp được cập nhật bởi một tiểu trình, thì liệu có đủ cho tính bất biến mà những cập nhật trong trạng thái đó không hiển thị trên tiểu trình giữ tập hợp bất biến không?
Để một tập hợp là bất biến, làm thế nào để cung cấp các bảo đảm bổ sung được chỉ định?
newCol = oldCol.add("element")
sẽ tạo ra bộ sưu tập mới là bản sao của bộ sưu tập cũ có thêm 1 phần tử và tất cả các tham chiếu đếnoldCol
sẽ vẫn trỏ đến cùng một bộ sưu tập cũ không thay đổi.