【问题标题】:List<byte[]> fills wrongList<byte[]> 填写错误
【发布时间】:2014-11-04 19:05:13
【问题描述】:

在这段代码中,当循环结束时,数组到处都填充了相同的值。经过一些调试后,我注意到在每个 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();

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

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

【问题讨论】:

  • 我猜你并没有改变里面的字节

标签: java android arrays byte add


【解决方案1】:

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

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

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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    • 2023-03-21
    • 2017-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多