Collections.copy()用于将源列表元素复制到已有目标列表中,要求目标列表大小不小于源列表且可修改,否则抛出异常。
在Java中,Collections.copy() 方法用于将一个集合中的所有元素复制到另一个集合中。需要注意的是,这个方法并不是创建集合的副本,而是将源集合的元素逐个复制到目标集合的对应位置上,且目标集合必须已有足够的容量来容纳这些元素,否则会抛出 IndexOutOfBoundsException。
Collections.copy() 的方法签名如下:
public static该方法要求两个参数都必须是 List 类型,不支持 Set、Map 等其他集合类型。
调用 Collections.copy() 前必须满足以下条件:
常见错误示例:
List为了确保目标列表有足够的空间,通常可以通过初始化时指定大小或先填充默认值来实现。
示例代码:
List
= new ArrayList(Arrays.asList("", "", "")); // 预设空位也可以使用 Arrays.asList 创建固定大小的列表:
ListCollections.copy() 并不会自动扩展目标集合,也不会创建新集合。它只是把源列表的元素写入已存在的目标列表中。
如果你希望真正“复制”一个集合,更简单的方式是直接构造新列表:
List这种方式更直观、安全,适用于大多数需要复制的场景。
基本上就这些。只要记住 Collections.copy() 是“填充已有列表”,而不是“创建副本”,就能避免常见错误。