Не удалось удалить null из списка в Java

У меня есть список класса bean-компонента newSRMAPIResponseBeanList, в котором я всегда получаю нулевой объект, который я пытаюсь удалить, но это приводит к исключению нулевого указателя, если я обрабатываю исключение, он не удаляет это нулевое значение. Ниже мой код.

for (int i = 0; i < newSRMAPIResponseBeanList.size(); i++) {
                try {
                    if (newSRMAPIResponseBeanList.get(i).getCompanyId().equals(null)) {
                        newSRMAPIResponseBeanList.remove(i);
                    }
                }catch(Exception e) {
                    e.printStackTrace();
                }
            }

В самом условии if это терпит неудачу. Я хочу удалить нулевое значение идентификатора компании. На самом деле newSRMAPIResponseBeanList — это список List<NewSRMAPIResponseBean> newSRMAPIResponseBeanList = new ArrayList<>();, а класс bean-компонента выглядит следующим образом.

public class NewSRMAPIResponseBean {
    private String companyId;
    private String investmentId;
    private String performanceId;
    private List<String> values;
}

Есть ли способ удалить это нулевое значение? Я также пытался использовать потоки Java следующим образом.

List<NewSRMAPIResponseBean> finalList=newSRMAPIResponseBeanList.parallelStream()
                  .filter(Objects::nonNull)
                  .collect(Collectors.toList());

Это тоже не сработало.

Пожалуйста, опубликуйте полный вывод об ошибке (включая трассировку стека) для «приводящего к исключению нулевого указателя», а также покажите, что не работает при фильтрации с помощью Java Streaming API.

hc_dev 17.02.2023 21:05
Лучшая компания по разработке спортивных приложений
Лучшая компания по разработке спортивных приложений
Ищете лучшую компанию по разработке спортивных приложений? Этот список, несомненно, облегчит вашу работу!
Blibli Automation Journey - Как захватить сетевой трафик с помощью утилиты HAR в Selenium 4
Blibli Automation Journey - Как захватить сетевой трафик с помощью утилиты HAR в Selenium 4
Если вы являетесь веб-разработчиком или тестировщиком, вы можете быть знакомы с Selenium, популярным инструментом для автоматизации работы...
Фото ️🔁 Radek Jedynak 🔃 on ️🔁 Unsplash 🔃
Фото ️🔁 Radek Jedynak 🔃 on ️🔁 Unsplash 🔃
Что такое Java 8 Streams API? Java 8 Stream API
Деревья поиска (Алгоритм4 Заметки к учебнику)
Деревья поиска (Алгоритм4 Заметки к учебнику)
(1) Двоичные деревья поиска: среднее lgN, наихудшее N для вставки и поиска.
0
1
66
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
Я хочу удалить нулевое значение идентификатора компании.

Я предполагаю, что вы имеете в виду удалить элемент списка, если идентификатор равен нулю. Так что это не боб, который является нулевым, это companyId. Предполагая, что у вас есть геттеры, попробуйте так. Если идентификатор не равен нулю, пропустите его.


List<NewSRMAPIResponseBean> finalList=newSRMAPIResponseBeanList.parallelStream()
        .filter(bean->bean.getCompanyId() != null)
        .collect(Collectors.toList());

Вы также можете сделать это в простом цикле. Чтобы избежать ConurrentModificationException, используйте итератор.

Iterator<NewSRMAPIResponseBean> iter =  newSRMAPIResponseBeanList.iterator();
while (iter.hasNext()) {
    if (iter.next().getCompanyId() == null) {
        iter.remove();
    }
}

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