gpt4 book ai didi

java - 用字符串数组填充列表

转载 作者:行者123 更新时间:2023-11-29 05:48:36 24 4
gpt4 key购买 nike

我正在尝试用字符串数组填充列表,但添加到列表中的唯一数组是最后添加的。这似乎被添加到所有列表元素中。

我做错了什么?

String[] indata = new String[2];
List<String[]> ls = new ArrayList<String[]>();
indata[0]="test1";
indata[1]="test2";
ls.add(indata);
indata[0]="test3";
indata[1]="test4";
ls.add(indata);
for(int index=0; index < ls.size(); index++)
System.out.println("ZZZZZZZZZZZZ----->> " + index + " " + Arrays.toString(ls.get(index)));

预期输出:

ZZZZZZZZZZZZ----->>  0     [test1, test2]
ZZZZZZZZZZZZ----->> 1 [test3, test4]

实际输出:

ZZZZZZZZZZZZ----->>  0     [test3, test4]
ZZZZZZZZZZZZ----->> 1 [test3, test4]

最佳答案

应该是:

String [] indata = new String [2];
List <String []> ls = new ArrayList <String []> ();
indata [0] = "test1";
indata [1] = "test2";
ls.add (indata);
indata = new String [2]; // This line added
indata [0] = "test3";
indata [1] = "test4";
ls.add (indata);

当您执行 ls.add (indata) 时,对数组的引用将存储在列表中,但不会存储数组的副本。所以在这之后,ls.get (0)indata 指向同一个数组实例,并用 indata [0] = 修改这个数组的第一个元素“test3” 将改变您使用 ls.get (0)[0] 看到的内容。

关于java - 用字符串数组填充列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14871330/

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