gpt4 book ai didi

java - 将数组列表值保存在函数中

转载 作者:行者123 更新时间:2023-12-02 04:56:38 25 4
gpt4 key购买 nike

所以我试图获取样本数量,但每次我调用此函数时,可用样本列表都会因ArrayList<Sample> available = new ArrayList<Sample>(this.getSample());而重置因此,如果我调用另一个删除或添加样本的函数,然后调用此函数,它将始终是默认加上或减去大小。例如......如果 this.getSample()尺寸为 5,有 2 种土壤不可用。我调用了两次删除函数,但我的结果总是以 4 结尾,而它应该是 3。

public ArrayList<Sample> getAvailableSample() {
ArrayList<Sample> available = new ArrayList<Sample>(this.getSample());
//create a copy of arraylist from sample. (doesn't mess with original data)
for(Sample s : available) { //loop through list
if(s.getSoil()!=null){ //soil is not available
available.remove(s); //remove from list
}
}

//System.out.println("size of available: "+available.size());
return available; //returns number of available samples
}

我无法移动 ArrayList<Sample> available = new ArrayList<Sample>(this.getSample());外面因为ArrayList<Sample>(this.getSample());默认值为 null,我无法在不弄乱该类或其他类中的其他函数的情况下调用该类的函数。

任何想法将不胜感激。

最佳答案

您正在循环 s,但只读取 b

for(Sample s : available) {
if(s.getSoil()!=null) { // s, not b.
available.remove(s); // s, not b.
}
}

您可以像读取 available 中的每个 Sample 一样读取循环。

创建一个集合 c,然后在循环后将其删除。

List<Sample> c = new ArrayList<>();
for(Sample s : available) {
if(s.getSoil()!=null) {
c.add(s);
}
}
available.removeAll(c);

关于java - 将数组列表值保存在函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28711290/

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