Как я могу заменить любые экземпляры null пустым списком в моем потоке?

#java #java-stream

Вопрос:

В моем методе ниже переменная n может быть null, и если она равна null, я хочу вернуть пустой список, например, что-то вроде List.of . Как я могу изменить приведенный ниже метод, чтобы гарантировать, что при обнаружении значения null List возвращается пустое значение, а не удаляется? Я попытался использовать filter то, что я прокомментировал ниже, но это просто удаляет все случаи, когда найдено значение null.

     private List<Account> getNames(MetaData metadata){
    return metadata.getNames()
          .stream()
          .map(n -> createAccount(n, metadata.getType()))
          //.filter(n -> n.getFinalName() != null)
          .collect(Collectors.toList());
    } 

private Account createAccount(String n, Metadata metadata){...}
 

Комментарии:

1. Можете ли вы поделиться своим Account уроком? Это кажется правильным для решения проблемы.

2. Ваш вопрос не совпадает с кодом. Вы не можете вернуть пустой список, так как ваш потоковый код имеет дело с Account объектами, которые предположительно не являются списками. Может быть, я неправильно понимаю, что ты пытаешься сделать. Некоторые входные и выходные данные могут помочь.

Ответ №1:

Вы можете использовать тернарный оператор

 return metadata.getNames()
      .stream()
      .map(n -> n!=null ? createAccount(n, metadata.getType()) : /* else do something */)
      .collect(Collectors.toList());