gpt4 book ai didi

java - 此方法应该反转 ArrayList 中的数字

转载 作者:行者123 更新时间:2023-12-01 06:49:02 26 4
gpt4 key购买 nike

import java.util.*;

public class Metodo {

public static void main(String[] args) {
ArrayList<Integer> a = new ArrayList();
a.add(1);
a.add(2);
a.add(3);
a.add(4);
a.add(5);
Metodo.inverte(a);
for(int i=0; i<a.size(); i++) {
System.out.println(a.get(i));
}
}

public static void inverte(ArrayList<Integer> a) {
ArrayList<Integer> other = new ArrayList();
other = a;
for(int i=0; i<a.size(); i++) {
a.set(i, other.get(other.size()-i-1));
}
}
}

此方法应该反转 ArrayList 中的数字,因此它应该打印“5 4 3 2 1”,但它会打印“5 4 3 4 5”。为什么?

最佳答案

other = a;

创建原始列表的副本。

aother 都引用同一个 List 对象,因此当您调用 a.set(0,other.get (other.size()-1),您将丢失 other.get(0) 的原始值。

您应该使用:

ArrayList<Integer> other = new ArrayList<>(a);

创建原始List的副本并删除other = a;

关于java - 此方法应该反转 ArrayList 中的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53433092/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com