bwo*_*gie 1 java android arraylist
是否有原因导致ArrayList丢失物品?我有一个ArrayList,它包含保存Integers的ArrayLists.每个大约有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]]
Run Code Online (Sandbox Code Playgroud)
我能够阅读一次,一切都在那里......但后来当我再次打电话时它已经消失了.我没有删除任何东西.这里发生了什么?
我无法发布我的原始代码,但这是一个模拟.
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
}
}
}
Run Code Online (Sandbox Code Playgroud)
看看你的代码:
private void readArray() {
ArrayList<Integer> row = new ArrayList<Integer>();
for(int a = 0; a <= _height - 1; a++) {
row.clear();
row = myArray.get(a);
...
}
}
Run Code Online (Sandbox Code Playgroud)
在每次迭代开始时,您将清除ArrayList在最后一次迭代中查看的内容.为什么要这么做?
只是摆脱了row.clear()电话,我希望一切都好.我还建议使用更为惯用的:
for(int a = 0; a < _height; a++) {
Run Code Online (Sandbox Code Playgroud)
甚至更好:
for(int a = 0; a < myArray.size(); a++) {
Run Code Online (Sandbox Code Playgroud)
甚至更好:
for (ArrayList<Integer> row : myArray) {
...
}
Run Code Online (Sandbox Code Playgroud)
(那你根本不需要打电话myArray.get()!)