Java-객체 목록에서 null 제거 [중복]

Nov 19 2020

다음과 같이 거대한 크기의 Java 목록 개체가 있습니다.

List<Object[]> res = // repo method that will return query result

res 개체에서 null을 제거해야합니다.

지금까지 아래 방법을 시도했지만 아무것도 작동하지 않는 것 같습니다.

1. res.remove(null);
2. res.removeAll(Collections.singleton(null));
3. res.removeAll(null);
4. while(res.remove(null));

목록 크기가 커질 것이므로 어떻게 효율적으로 null을 제거 할 수 있습니까?

답변

6 NikolasCharalambidis Nov 19 2020 at 17:48

변경 가능한 목록

항목을 List::removeIf감지하는 술어와 함께 사용할 수 있습니다 null.

List<Object[]> mutableList = new ArrayList<>(Arrays.asList(
    new Object[] {}, 
    null, 
    new Object[] {}));

mutableList.removeIf(Objects::isNull);

불변 목록

이 경우 Stream API 또는 for-loop를 사용하여 null이 아닌 요소를 찾아 새 목록에 추가해야합니다.

List<Object[]> immutableList = Arrays.asList(
    new Object[] {}, 
    null, 
    new Object[] {});

List<Object[]> newList = immutableList.stream()
                                      .filter(Objects::nonNull)
                                      .collect(Collectors.toList());