gpt4 book ai didi

java - List 填充错误

转载 作者:行者123 更新时间:2023-12-01 12:20:01 25 4
gpt4 key购买 nike

在此代码中,当循环完成时,数组各处都会填充相同的值。经过一些调试后,我注意到在每次 add() 时,数组都完全填充了相同的值。

List<byte[]> datas = new ArrayList<byte[]>();

// CODE ... //

FileInputStream fis = new FileInputStream(file);
byte[] buff = new byte[2];
int n;
while((n=fis.read(buff))!=-1){
this.datas.add(buff);
}
fis.close();

我用字符串数组尝试了相同的代码,它工作正常......

为什么会发生这种情况?我该如何解决?

最佳答案

您正在使用 byte[] buff 变量的相同实例填充 ArrayList。因此,每次修改 buff(在 fis.read(buff) 中),您实际上都在修改 ArrayList 中的所有项目。

尝试在每次迭代中创建一个新的 byte[]:

List<byte[]> datas = new ArrayList<byte[]>();

// CODE ... //

FileInputStream fis = new FileInputStream(file);
byte[] buff = new byte[2];
int n
while((n=fis.read(buff))!=-1){
this.datas.add(buff);
buff = new byte[2];
}
fis.close();

关于java - List<byte[]> 填充错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26743003/

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