gpt4 book ai didi

java - 如何在迭代过程中从数组列表中删除对象?

转载 作者:行者123 更新时间:2023-12-02 12:59:19 24 4
gpt4 key购买 nike

我正在 Android Studio 中构建一个应用程序,其中包含各种树木和灌木首选项和复选框。您选中一个框,表明您想要一棵具有某种特征的树,代码会遍历库存中所有树木和灌木的数组列表(我创建了一个 Plant 类,具有大小、名称、果实等属性)并且将与该条件匹配的对象的所有字符串名称添加到要在不同屏幕上打印的另一个字符串数组列表(称为“选择”)(在另一步骤中打印之前消除重复项)。

问题在于在迭代期间从数组列表中删除对象。这是一个示例:

    if (cb_s.isChecked()) {
for(Plant p : test){
if(p.getSize() == "s"){
selection.add(p.getName());
}
else{
selection.remove(p.getName());
test.remove(p);
}
}
}
if (cb_m.isChecked()) {
for(Plant p : test){
if(p.getSize() == "m"){
selection.add(p.getName());
}
else{
selection.remove(p.getName());
test.remove(p);
}
}
}
if (cb_l.isChecked()) {
for(Plant p : test){
if(p.getSize() == "l"){
selection.add(p.getName());
}
else{
selection.remove(p.getName());
test.remove(p);
}
}
}

对于每个选中的复选框,它都会运行一个名为“test”的数组列表来挑选出与该复选框相对应的植物(在本例中,这三个 block 将挑选出小型、中型和大型植物 - s、m、和 l) 并将它们添加到另一个稍后打印的字符串数组列表中。它还从第一个数组列表 test 中删除植物,以便在选中其他复选框时无法对它们进行比较(这将导致最终的植物列表不满足通过复选框选择的所有标准)。

Java 不喜欢我尝试从数组列表“测试”中删除元素的方式,因为这就是我正在迭代的内容。如果对象不符合标准,在迭代期间删除对象的正确方法是什么?我听说我应该使用实际集合的迭代器?我将如何针对此代码执行此操作?

谢谢!

最佳答案

不要将 String 与 == 方法进行比较,而是在所有情况下都使用 .equals 进行比较,例如

p.getSize().equals("s")

相反

p.getSize() == "s"

关于java - 如何在迭代过程中从数组列表中删除对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44331869/

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