Удалить все null из ArrayList с помощью метода remove () итератора

Я новичок в Java. Я просто искал итератор в Collection Framework. но теперь я хочу удалить все null из ArrayList с помощью метода Iterator remove (). поэтому попробовал следующий код, но я не получаю ожидаемого результата, так как мне нужен список без каких-либо значений NULL. пожалуйста, объясните кому-нибудь Спасибо.

here is my code

package setinterface;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;

public class InternalWorkingOfArrayList {

    public static void main(String[] args) {

        List<String> setOfString = new ArrayList<String>();
        setOfString.add("A");
        setOfString.add("B");
        setOfString.add("C");
        setOfString.add("B");
        setOfString.add(null);
        setOfString.add("A");
        setOfString.add(null);


        Iterator<String> iterator = setOfString.iterator();
        while (iterator.hasNext()) {
            String string = (String) iterator.next();
            if (null==string) {
                iterator.remove();
                break;
            }   
        }
        for (String string1 : setOfString) {
            System.out.println(string1);
        }
    }
}

Почему там разрыв?

cpp beginner 02.04.2018 12:42

Возможный дубликат Как удалить все нулевые элементы из ArrayList или String Array?

Ousmane D. 02.04.2018 14:40
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
749
3

Ответы 3

Почему вы нарушаете петлю ?? Удалите из кода инструкцию перерыв.

while (iterator.hasNext()) {
            String string = (String) iterator.next();
            if (null==string) {
                iterator.remove();
                //break;
            }   
        }

Нет нужды в кастинге

fps 03.04.2018 23:17

Что вы здесь делаете неправильно, так это то, что вы напрямую пытаетесь преобразовать свой элемент в строку. Это даст вам исключение для нулевого элемента.

Это то, что вы могли сделать именно так.

package setinterface;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;

public class InternalWorkingOfArrayList {

    public static void main(String[] args) {

        List<String> setOfString = new ArrayList<String>();
        setOfString.add("A");
        setOfString.add("B");
        setOfString.add("C");
        setOfString.add("B");
        setOfString.add(null);
        setOfString.add("A");
        setOfString.add(null);


        Iterator<String> iterator = setOfString.iterator();
        while (iterator.hasNext()) {
            if (null==iterator.next()) {
                iterator.remove();
            }   
        }
        for (String string1 : setOfString) {
            System.out.println(string1);
        }
    }
}

Используя функции Ява-8, вы можете добиться этого с помощью одной строки кода следующим образом ...

setOfString.removeAll(Collections.singleton(null));

А затем распечатайте результат:

System.out.println(setOfString); //output would be: [A, B, C, B, A]

Или лучше setOfString.removeIf(s -> s == null);, или со ссылкой на метод: setOfString.removeIf(Objects::isNull);

fps 03.04.2018 23:18

Другие вопросы по теме