java - 创建新数组

标签 java arrays

问题很简单。是否有任何简单快速的方法来创建(新引用)数组,或者必须手动完成?

示例:

Collection<A> c = new ArrayList<A>();
c.add(new A());
c.add(new A());
c.add(new A());

A[] a1 = c.toArray(new A[0]);
System.out.println("a1: " + Arrays.toString(a1));
System.out.println("c: " + c);

A[] a2 = Arrays.copyOf(a1, a1.length);
System.out.println("a2: " + Arrays.toString(a2));

所有创建的数组都具有相同的引用。我想要包含与旧元素内容相同的新元素的数组。旧元素的副本。

答案是:How do you make a deep copy of an object in Java? 。现在我发现这个问题是重复的。

最佳答案

如果您想创建数组的深层副本(意思是:使用新创建的对其每个元素的引用),有多种选择,包括:

  • 序列化/反序列化数组(请参阅 Apache 的 SerializationUtils)
  • 手动复制每个元素(以及该元素的属性,递归地)
  • 显式使用反射
  • 使用复制构造函数

...等等。查看堆栈溢出,有several posts讨论这个主题。

关于java - 创建新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18577282/

相关文章:

php - 从 mysql 表创建数组

Java Sudoku Squares 3x3 检查有效性

Java "Stored procedure"想法

java - SpringBoot注入(inject): OK with app,但没有经过测试

java - 什么是 JVM -server 参数?

c# - 将 .txt 文件读入数组

Java - 按行总和对二维数组进行排序

java - 将上下文属性传递给 ServerResource

java - Jackson:将 JSON 响应映射到多个 bean

c++ - 处理未初始化的指针数组时出错 C++