Если вы хотите удалить элемент с индексом 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]
Если вы хотите удалить (первый) элемент со значением 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]
Ответ 2
list = [1, 2, 3, 4]
newList = list.findAll { it != 2 }
Должен дать вам все, кроме 2
Конечно, у вас может быть причина для требования цикла?
Ответ 3
Как вы заявляете в своем комментарии, что вам не требуется специальный цикл... Если вы счастливы изменить исходный список, вы можете использовать removeAll:
// Remove all negative numbers
list = [1, 2, -4, 8]
list.removeAll { it < 0 }
Ответ 4
Я думаю, вы можете сделать:
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)
}
но я не понимаю, почему вы хотите сделать это таким образом.