安装网站系统,app技术开发,山西省诚信建设网站,重庆工程建设标准化信息网在Java中#xff0c;要将一个 ArrayList变得不可修改#xff0c;你可以使用以下几种方法#xff1a;
###1. 使用 Collections.unmodifiableList
Java 提供了 Collections.unmodifiableList 方法#xff0c;可以生成一个不可修改的视图。这种方式返回的列表将不允许添加、…在Java中要将一个 ArrayList变得不可修改你可以使用以下几种方法
###1. 使用 Collections.unmodifiableList
Java 提供了 Collections.unmodifiableList 方法可以生成一个不可修改的视图。这种方式返回的列表将不允许添加、删除或更新元素但底层的原始列表仍然可以修改。
import java.util.Collections;
import java.util.List; public class UnmodifiableExample { public static void main(String[] args) { ListString modifiableList new ArrayList(); modifiableList.add(1); modifiableList.add(2); modifiableList.add(3); // 创建不可修改的列表 ListString unmodifiableList Collections.unmodifiableList(modifiableList); System.out.println(unmodifiableList); // 输出: [1,2,3] // 异常UnsupportedOperationException // unmodifiableList.add(4); }
}
###2. 使用 List.of 方法Java9及以上
如果你使用的是Java9或更高版本可以直接使用 List.of 方法创建一个不可修改的列表。这种列表在创建后就不能进行任何修改操作。 public class ImmutableListExample { public static void main(String[] args) { ListString immutableList List.of(1, 2, 3); System.out.println(immutableList); // 输出: [1,2,3] // 异常UnsupportedOperationException // immutableList.add(4); }
}
###3. 自定义集合类如果你需要对集合的行为进行更精细的控制可以自定义一个不可修改的列表类。在这个类中你可以只暴露只读的方法而隐藏其他修改方法。
import java.util.List; public class ImmutableArrayListT { private final ListT list; public ImmutableArrayList(ListT list) { this.list new ArrayList(list); //复制列表防止外部修改 } public T get(int index) { return list.get(index); } public int size() { return list.size(); } // 不提供添加、删除元素的方法}
###4. 使用 java.util.Set 或 java.util.Map
在需要不变性immutable的情况下使用其他不变的数据结构如 Set 或 Map也可以。在 Java9 中提供了 Set.of(...) 和 Map.of(...) 方法。 public class ImmutableSetExample { public static void main(String[] args) { SetString immutableSet Set.of(1, 2, 3); System.out.println(immutableSet); // 输出: [1,2,3] // 异常UnsupportedOperationException // immutableSet.add(4); }
}
结要让 ArrayList变得不可修改最常见的方式是使用 Collections.unmodifiableList 或 Java9 引入的 List.of 方法。选择合适的方法依赖于你的具体需求和 Java版本。