ループ内からgroovyのリストから項目を削除する方法を理解しようとしています。
static main(args) {
def list1 = [1, 2, 3, 4]
for(num in list1){
if(num == 2)
list1.remove(num)
}
println(list1)
}
index 2のアイテムを削除したい場合は、
list = [1,2,3,4]
list.remove(2)
assert list == [1,2,4]
// or with a loop
list = [1,2,3,4]
i = list.iterator()
2.times {
i.next()
}
i.remove()
assert list == [1,2,4]
value 2の(最初の)アイテムを削除したい場合は、
list = [1,2,3,4]
list.remove(list.indexOf(2))
assert list == [1,3,4]
// or with a loop
list = [1,2,3,4]
i = list.iterator()
while (i.hasNext()) {
if (i.next() == 2) {
i.remove()
break
}
}
assert list == [1,3,4]
list = [1, 2, 3, 4]
newList = list.findAll { it != 2 }
2以外のすべてを与える必要があります
もちろん、ループが必要な理由があるのでしょうか?
コメントで特にループを必要としないと述べているようです。元のリストを変更してよければ、removeAll
を使用できます。
// Remove all negative numbers
list = [1, 2, -4, 8]
list.removeAll { it < 0 }
私はあなたができると思います:
list - 2;
または...
list.remove(2)
ループは必要ありません。
ループを使用したい場合は、イテレーターを使用して実際にアイテムを削除する方法を検討できます。
import Java.util.Iterator;
static main(args) { def list1 = [1, 2, 3, 4]
Iterator i = list1.iterator();
while (i.hasNext()) {
n = i.next();
if (n == 2) i.remove();
}
println(list1)
}
しかし、なぜあなたがそれをそのようにしたいのか分かりません。