মূলত unModifiable
সংগ্রহটি একটি ভিউ, সুতরাং অপ্রত্যক্ষভাবে এটি অন্য কোনও রেফারেন্স থেকে পরিবর্তনযোগ্য। এছাড়াও এটি সরান সংগ্রহের কেবল পঠনযোগ্য মতামত হিসাবে, যখন উত্স সংগ্রহটি পরিবর্তনযোগ্য পরিবর্তনগুলি সর্বদা সর্বশেষতম মানগুলির সাথে উপস্থিত থাকবে।
তবে immutable
সংগ্রহটিকে অন্য সংগ্রহের কেবল পাঠ্য অনুলিপি হিসাবে বিবেচনা করা যেতে পারে এবং পরিবর্তন করা যায় না। এই ক্ষেত্রে যখন উত্স সংগ্রহ পরিবর্তন হয়, অপরিবর্তনীয় সংগ্রহ পরিবর্তনগুলি প্রতিফলিত করে না
এই পার্থক্যটি কল্পনা করার জন্য এখানে একটি টেস্টকেস রয়েছে।
@Test
public void testList() {
List<String> modifiableList = new ArrayList<String>();
modifiableList.add("a");
System.out.println("modifiableList:"+modifiableList);
System.out.println("--");
//unModifiableList
assertEquals(1, modifiableList.size());
List<String> unModifiableList=Collections.unmodifiableList(
modifiableList);
modifiableList.add("b");
boolean exceptionThrown=false;
try {
unModifiableList.add("b");
fail("add supported for unModifiableList!!");
} catch (UnsupportedOperationException e) {
exceptionThrown=true;
System.out.println("unModifiableList.add() not supported");
}
assertTrue(exceptionThrown);
System.out.println("modifiableList:"+modifiableList);
System.out.println("unModifiableList:"+unModifiableList);
assertEquals(2, modifiableList.size());
assertEquals(2, unModifiableList.size());
System.out.println("--");
//immutableList
List<String> immutableList=Collections.unmodifiableList(
new ArrayList<String>(modifiableList));
modifiableList.add("c");
exceptionThrown=false;
try {
immutableList.add("c");
fail("add supported for immutableList!!");
} catch (UnsupportedOperationException e) {
exceptionThrown=true;
System.out.println("immutableList.add() not supported");
}
assertTrue(exceptionThrown);
System.out.println("modifiableList:"+modifiableList);
System.out.println("unModifiableList:"+unModifiableList);
System.out.println("immutableList:"+immutableList);
System.out.println("--");
assertEquals(3, modifiableList.size());
assertEquals(3, unModifiableList.size());
assertEquals(2, immutableList.size());
}
আউটপুট
modifiableList:[a]
--
unModifiableList.add() not supported
modifiableList:[a, b]
unModifiableList:[a, b]
--
immutableList.add() not supported
modifiableList:[a, b, c]
unModifiableList:[a, b, c]
immutableList:[a, b]
--