gpt4 book ai didi

java - ArrayList 丢失项目

转载 作者:行者123 更新时间:2023-11-29 08:04:20 24 4
gpt4 key购买 nike

ArrayList 会丢失项目是否有原因?我有一个包含 ArrayLists 的 ArrayList,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]]

我能够阅读一次,一切都在那里......但稍后当我再次调用它时,它就不见了。我没有删除任何东西。这里发生了什么?

我无法发布我的原始代码,但这是一个模型。

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 void readArray() {
ArrayList<Integer> row = new ArrayList<Integer>();

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

在每次迭代开始时,您将清除在上次迭代中查看的 ArrayList。你为什么要这样做?

只要去掉 row.clear() 调用,我希望一切都会好起来的。我还建议使用更惯用的方式:

for(int a = 0; a < _height; a++) {

或者更好:

for(int a = 0; a < myArray.size(); a++) {

甚至更好:

for (ArrayList<Integer> row : myArray) {
...
}

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

关于java - ArrayList 丢失项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12378501/

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