У меня есть ArrayList, который иногда может содержать значения «Время (GMT)», «Нет» и «Нет датчика» на разных позициях. Я не хочу, чтобы удалить все экземпляры тех, так что я это мало написал цикл:Удаление элементов с определенными именами из ArrayList
for(int i = 0; i < trackedFieldsMod.size(); i++) {
if(trackedFieldsMod.get(i).equalsIgnoreCase("Time (GMT)") || trackedFieldsMod.get(i).equalsIgnoreCase("None") || trackedFieldsMod.get(i).equalsIgnoreCase("No Sensor")) {
trackedFieldsMod.remove(i); //Don't let users find average/mean/etc for irrelevant fields
}
}
По какой-то причине это будет удалить «Time (GMT)» в начале списка, и любой «None» или «Нет датчика» в конце списка, но если у моего ArrayList есть «None» или «No Sensor» посередине в любом месте, они не удаляются. Почему я не могу понять, почему. Есть предположения? Благодаря!
Это применимо только в случае двух смежных вхождений. – matt5784
Но, конечно. Мой друг, ты джентльмен и ученый. Я приму ваш ответ примерно через 7 минут. Haha – Nick
Использование Iterator и [Iterator.remove()] (http://docs.oracle.com/javase/6/docs/api/java/util/Iterator.html#remove % 28% 29) по матчу, вероятно, проще всего. – sudocode