Java ArrayList丢失项目

Java ArrayList丢失项目,java,android,arraylist,Java,Android,Arraylist,ArrayList会丢失项目有什么原因吗?我有一个保存整数的数组列表。每本书大约有32个项目。稍后,当我需要调用ArrayList时,除了最后一个项目外,其他项目都丢失了。还有32件物品,但都是空的 [[], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [-16323110, -16688166, -1

ArrayList会丢失项目有什么原因吗?我有一个保存整数的数组列表。每本书大约有32个项目。稍后,当我需要调用ArrayList时,除了最后一个项目外,其他项目都丢失了。还有32件物品,但都是空的

[[], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [-16323110, -16688166, -14978279, -837220, -11002320, -4136419, -13118245, -5370572, -11382698, -13140399, -13754890, -8184649, -11711035, -11668025, -12910969, -11058211, -9974559, -9665946, -12513105, -14320755, -16332438, -7673092, -13016023, -15454286, -12413148, -9780316, -2553149, -3313219, -10953060, -940790, -11989718, -12189591]]
我能读一次,一切都在那里。。。但后来我再打给它,它就不见了。我不会移除任何东西。这里发生了什么

我不能发布我的原始代码,但这里有一个模型

private ArrayList<ArrayList<Integer>> myArray = new ArrayList<ArrayList<Integer>>();

private void makeArray() {
for(int i = 0; i<= _height - 1; i++) {
            ArrayList<Integer> row = new ArrayList<Integer>();
            for(int ii = 0; ii <= _width - 1; ii++) {
                row.add(ii);    
            }
            myArray.add(row);
        }
}

private void readArray() {
ArrayList<Integer> row = new ArrayList<Integer>();

            for(int a = 0; a <= _height - 1; a++) {
                row.clear();
                row = myArray.get(a);

                for(int aa = 0; aa <= _width - 1; aa++) {
                    int c = row.get(aa);
//stuff
                }
            }
}
private ArrayList myArray=new ArrayList();
私有void makeArray(){
对于(int i=0;i请查看您的代码:

private void readArray() {
    ArrayList<Integer> row = new ArrayList<Integer>();

    for(int a = 0; a <= _height - 1; a++) {
        row.clear();
        row = myArray.get(a);
        ...
    }
}
或者更好:

for(int a = 0; a < myArray.size(); a++) {
for(int a=0;a
或者更好:

for(int a = 0; a < myArray.size(); a++) {
for(ArrayList行:myArray){
...
}
(那么你根本不需要调用
myArray.get()

看看你的代码:

private void readArray() {
    ArrayList<Integer> row = new ArrayList<Integer>();

    for(int a = 0; a <= _height - 1; a++) {
        row.clear();
        row = myArray.get(a);
        ...
    }
}
或者更好:

for(int a = 0; a < myArray.size(); a++) {
for(int a=0;a
或者更好:

for(int a = 0; a < myArray.size(); a++) {
for(ArrayList行:myArray){
...
}

(那么您根本不需要调用
myArray.get()

您正在调用row.clear();(为什么?)您是否尝试过通过单步循环进行调试,以查看是否正确添加了数据?您的模型不足以诊断您的实际问题。同意Don的意见,我认为代码没有问题。可能您还有其他代码可以修改
myArray
。您正在调用row.clear();(为什么?)您是否尝试过通过单步循环进行调试,以查看是否正确添加了数据?您的模型不足以诊断您的实际问题。同意Don的意见,我看不出代码有问题。也许您有其他代码可以修改
myArray
。我也这么认为,但后来我读了
我能读我的t一次,一切都在那里
@JohanSjöberg:不,这正是问题所在-他在阅读后会清除它,所以它只会在下次调用
readArray
时失败。这就像阅读一本书,但在阅读完后会立即擦去每一页。下次你来阅读这本书时,它是空白的!根据这种解释,是的,d实际上,(+1表示没有遗漏明显的内容)@bwoogie,这不是Java处理引用的方式。你没有得到数组的“副本”(你必须“扔掉”),你得到的是对最初创建的数组的引用。这就是你“丢失”的原因所有的对象,因为您正在删除原始内容。@B哦,是的-了解对象在Java中的工作方式是绝对重要的。您应该有一本关于Java的好书,其中详细介绍了这一点。我也这么认为,但后来我读了
一次,所有内容都在那里了。
@JohanSjöberg:不,这正是e点-他在阅读后清除它,因此只有在下一次调用
readArray
时才会失败。这就像阅读一本书,但在阅读后立即将每一页都擦掉。下一次你来阅读这本书时,它是空白的!有了这样的解释,是的,肯定是。(+1表示没有遗漏明显的内容)@B哦,这不是Java处理引用的方式。你没有得到数组的“副本”(你必须“扔掉”),你得到的是对最初创建的数组的引用。这就是你“丢失”的原因所有的对象,因为您正在删除原始内容。@B哦,是的-了解对象在Java中的工作原理是绝对重要的。您应该有一本关于Java的好书,详细介绍了这一点。