简述怎么确保一个集合不能被修改 ?
                                             参考答案:
                                         
                                        要确保一个Java集合不能被修改,可以采取以下几种方法:
使用不可变集合:
- Java中的
Collections类提供了unmodifiableCollection、unmodifiableList、unmodifiableSet、unmodifiableMap等方法,这些方法接受一个集合作为参数,并返回一个包装了该集合的只读视图。这个只读视图不允许添加、删除或修改元素。如果尝试修改这个只读集合,将会抛出UnsupportedOperationException异常。 
- Java中的
 使用不可变实现:
- 对于某些集合类型,Java提供了不可变的实现,例如
Collections.emptyList()、Collections.singleton()等。这些是不可变的,即它们的内容在创建后就不能更改。 
- 对于某些集合类型,Java提供了不可变的实现,例如
 使用线程安全的集合:
- 某些线程安全的集合类,如
Collections.synchronizedCollection返回的集合,虽然其主要目的是线程安全,但也可以间接地用于防止集合被修改,因为它们的修改方法(如add、remove等)通常被同步,并且可能抛出异常来防止并发修改。 
- 某些线程安全的集合类,如
 自定义集合类:
- 可以通过继承现有的集合类并重写其修改方法(如
add、remove、clear等),使这些方法抛出异常或执行空操作,从而确保集合不被修改。 
- 可以通过继承现有的集合类并重写其修改方法(如
 使用防御性复制:
- 当需要将集合传递给可能修改它的方法或组件时,可以传递集合的副本而不是原始集合。这样,即使副本被修改,原始集合也会保持不变。可以使用
new ArrayList<>(originalList)等方式来创建集合的副本。 
- 当需要将集合传递给可能修改它的方法或组件时,可以传递集合的副本而不是原始集合。这样,即使副本被修改,原始集合也会保持不变。可以使用
 封装集合:
- 可以创建一个封装了集合的类,只提供读取集合元素的方法,而不提供修改集合的方法。这样,外部代码就无法直接修改封装在内部的集合。
 
需要注意的是,即使采取了上述措施,如果集合是通过引用传递的,并且接收者保留了原始引用,那么他们仍然可能通过其他途径修改集合。因此,确保集合不被修改的最佳实践是结合使用上述方法,并在代码设计和实现中始终保持警惕。