Используя Java 8 , это может быть выполнено различными способами с использованием потоков, параллельных потоков и метода removeIf
:
List<String> stringList = new ArrayList<>(Arrays.asList(null, "A", "B", null, "C", null));
List<String> listWithoutNulls1 = stringList.stream()
.filter(Objects::nonNull)
.collect(Collectors.toList()); //[A,B,C]
List<String> listWithoutNulls2 = stringList.parallelStream()
.filter(Objects::nonNull)
.collect(Collectors.toList()); //[A,B,C]
stringList.removeIf(Objects::isNull); //[A,B,C]
Параллельный поток будет использовать доступные процессоры и будетускорить процесс для разумных размеров списков.Перед использованием потоков рекомендуется всегда проводить сравнительный анализ.