认为有一个名为barca []的数组。该阵列具有播放器列表。球员被确定为阶级。例如barca [0] = messi; messi是一名球员。我要复制barca []。如果我写barca2 [] = barca [];我复制了数组,但是当barca2 []更改时,barca []也会更改。我希望他们独立。我能怎么做?
`
公共班级主要{
public static void main(String[] args) {
// TODO Auto-generated method stub
Player barca[] = new Player[10];
Player barca2[] = new Player[10];
for(int i=0; i<10; i++){
barca[i] = new Player();
barca[i].id = i;
}
barca2 = barca;
//print the arrays
for(int i = 0; i<10; i++){
System.out.print(barca[i].id);
}
System.out.println();
for(int i = 0; i<10; i++){
System.out.print(barca2[i].id);
}
//change an array
barca2[5].id=100;
System.out.println();
//print the arrays
for(int i = 0; i<10; i++){
System.out.print(barca[i].id);
}
System.out.println();
for(int i = 0; i<10; i++){
System.out.print(barca2[i].id);
}
}
}
输出:
0123456789
0123456789
012341006789
012341006789
`
最佳答案
这很容易实现,如果我们通过Arraylist进行分析,那么在示例代码中还将获得列出的两个选项Direct和Indirect。您可以在复制arraylist之后编辑对象。它不会影响第一个arraylist。请检查完整的代码以完全理解。
//1. Direct: Copy player list into player1 List
List<Player> player1 = new ArrayList<Player>(player);
//2. Indirect using method: Copy player list into player1 List
List<Player> player1 = new ArrayList<Player>();
player1.addAll(player);
您可能会看到完整的代码here。
您可以测试代码here。