如何返回数组的副本? [复制]
Posted
技术标签:
【中文标题】如何返回数组的副本? [复制]【英文标题】:How to return a copy of an array? [duplicate] 【发布时间】:2014-03-08 20:32:14 【问题描述】: public void addStudent(String student)
String [] temp = new String[students.length * 2];
for(int i = 0; i < students.length; i++)
temp[i] = students[i];
students = temp;
students[numberOfStudents] = student;
numberOfStudents++;
public String[] getStudents()
String[] copyStudents = new String[students.length];
return copyStudents;
我试图让 getStudents 方法返回我在 addStudent 方法中创建的数组的副本。我不知道该怎么做。
【问题讨论】:
copyStudents=students.clone(); ***.com/questions/14149733/… 【参考方案1】:System.arraycopy(students, 0, copyStudents, 0, students.length);
【讨论】:
那么我会说 return copyStudents; ?【参考方案2】:1) Arrays.copyOf
public String[] getStudents()
return Arrays.copyOf(students, students.length);;
2System.arraycopy
public String[] getStudents()
String[] copyStudents = new String[students.length];
System.arraycopy(students, 0, copyStudents, 0, students.length);
return copyStudents;
3clone
public String[] getStudents()
return students.clone();
另请参阅answer,了解每种方法的性能。它们几乎一样
【讨论】:
【参考方案3】:试试这个:
System.arraycopy(students, 0, copyStudents, 0, students.length);
【讨论】:
【参考方案4】:Java 的System
类为此提供了一个实用方法:
public String[] getStudents()
String[] copyStudents = new String[students.length];
System.arraycopy(students, 0, copyStudents, 0, students.length );
return copyStudents;
【讨论】:
【参考方案5】:System.arraycopy(Object source, int startPosition, Object destination, int startPosition, int length);
docu 中的更多信息,当然,在 SO 上已被问过万亿次,例如 here
【讨论】:
【参考方案6】:您可以使用Arrays.copyOf() 创建您的数组的副本。
或
您也可以使用System.arraycopy()。
【讨论】:
【参考方案7】:您可以使用Arrays.copyOf()。
例如:
int[] arr=new int[]1,4,5;
Arrays.copyOf(arr,arr.length); // here first argument is current array
// second argument is size of new array.
【讨论】:
以上是关于如何返回数组的副本? [复制]的主要内容,如果未能解决你的问题,请参考以下文章