原创

java面试题-如何保障集合不被修改?

保障集合不被修改的方法

在Java中,有时我们希望确保一个集合不被修改,即使在其他部分的代码中对原始集合进行修改操作也不会影响到这个集合。为了达到这个目的,我们可以使用Collections.unmodifiableCollection方法来创建一个只读的集合。这样,任何试图修改集合的操作都会触发UnsupportedOperationException异常。

I. Collections.unmodifiableCollection 方法详解

1.1 方法签名

public static <T> Collection<T> unmodifiableCollection(Collection<? extends T> c)

1.2 参数说明

c 要变为只读的集合。

1.3 返回值

返回一个只读的Collection对象。

II. 示例代码

下面是一个示例代码,演示了如何使用Collections.unmodifiableCollection来确保集合不被修改:

import java.util.ArrayList;import java.util.Collection;import java.util.Collections;import java.util.List;
public class UnmodifiableCollectionExample { public static void main(String[] args) { // 创建一个可修改的ArrayList List<String> list = new ArrayList<>(); list.add("x");
// 使用Collections.unmodifiableCollection创建只读集合 Collection<String> unmodifiableCollection = Collections.unmodifiableCollection(list);
try { // 试图向只读集合中添加元素,会抛出UnsupportedOperationException异常 unmodifiableCollection.add("y"); } catch (UnsupportedOperationException e) { System.out.println("尝试修改只读集合抛出异常:" + e.getMessage()); }
// 原始集合没有被修改 System.out.println("原始集合大小:" + list.size()); }}

III. 代码解释

3.1 创建可修改的ArrayList

List<String> list = new ArrayList<>();list.add("x");

我们首先创建一个普通的ArrayList,并向其中添加了一个元素。

3.2 使用Collections.unmodifiableCollection创建只读集合

Collection<String> unmodifiableCollection = Collections.unmodifiableCollection(list);

然后,我们使用Collections.unmodifiableCollection方法将这个ArrayList转换为只读的集合。

3.3 试图修改只读集合

unmodifiableCollection.add("y");

接下来,我们试图向只读集合中添加元素,这会导致UnsupportedOperationException异常的抛出。

3.4 原始集合没有被修改

System.out.println("原始集合大小:" + list.size());

尽管试图修改只读集合抛出异常,但原始的ArrayList并没有被修改。

IV. 总结

通过使用Collections.unmodifiableCollection,我们可以简单而有效地确保一个集合不被修改。这在某些情况下非常有用,例如当我们希望传递一个只读的集合给其他方法或类时,以防止不必要的修改。

 备注

备注: 关注站长获取更多详情。

file
file
正文到此结束
本文目录