Java 에서 리스트에 Null 요소가 있는지 확인하는 방법

JavaBeginner
지금 연습하기

소개

이 랩에서는 Java Listnull 요소가 포함되어 있는지 확인하는 방법을 배우게 됩니다. 간단한 contains() 메서드부터 시작하여 이를 달성하기 위한 다양한 방법을 살펴볼 것입니다. contains(null)을 사용하여 리스트에 null 값이 있는지 빠르게 확인할 수 있는 방법을 배우게 됩니다.

초기 확인 후, 이 랩에서는 리스트를 반복하여 각 요소가 null 인지 수동으로 확인하는 방법을 안내합니다. 이 접근 방식은 더 많은 제어를 제공하며 여러 null 요소가 있는 시나리오를 처리할 수 있게 해줍니다. 이 또한 다룰 것입니다. 이 랩을 마치면 Java 리스트 내에서 null 을 식별하기 위한 다양한 기술에 대한 확실한 이해를 갖게 될 것입니다.

contains() 를 사용하여 Null 확인

이 단계에서는 contains() 메서드를 사용하여 Java List 내에 null 요소가 있는지 확인하는 방법을 살펴보겠습니다. contains()는 일반적으로 특정 요소를 확인하는 데 사용되지만, Listnull이 포함되어 있는지 확인하는 데에도 사용할 수 있습니다.

먼저, 새로운 Java 파일을 만들어 보겠습니다. 왼쪽의 파일 탐색기에서 ~/project 디렉토리를 마우스 오른쪽 버튼으로 클릭하고 "New File"을 선택한 다음, 이름을 NullCheckList.java로 지정합니다.

이제 편집기에서 NullCheckList.java를 열고 다음 코드를 추가합니다.

import java.util.List;
import java.util.ArrayList;

public class NullCheckList {

    public static void main(String[] args) {
        // Create a List and add some elements, including null
        List<String> names = new ArrayList<>();
        names.add("Alice");
        names.add(null); // Adding a null element
        names.add("Bob");

        // Check if the list contains null using contains()
        boolean containsNull = names.contains(null);

        // Print the result
        System.out.println("Does the list contain null? " + containsNull);
    }
}

이 코드의 새로운 부분을 자세히 살펴보겠습니다.

  • import java.util.List;import java.util.ArrayList;: 이 줄은 ListArrayList를 사용하기 위해 필요한 클래스를 가져옵니다.
  • List<String> names = new ArrayList<>();: 이는 String 객체를 담을 수 있는 새로운 ArrayList를 생성합니다. ListArrayList가 구현하는 인터페이스이므로 List로 선언합니다.
  • names.add(null);: 이 줄은 리스트에 명시적으로 null 값을 추가합니다.
  • boolean containsNull = names.contains(null);: 이것이 이 단계의 핵심입니다. names 리스트에서 contains() 메서드를 호출하고 인수로 null을 전달합니다. 리스트에 null이 포함되어 있으면 메서드는 true를 반환하고, 그렇지 않으면 false를 반환합니다. 결과는 부울 변수 containsNull에 저장됩니다.
  • System.out.println("Does the list contain null? " + containsNull);: 이 줄은 콘솔에 확인 결과를 출력합니다.

파일을 저장합니다 (Ctrl+S 또는 Cmd+S).

이제 프로그램을 컴파일하고 실행해 보겠습니다. WebIDE 하단의 터미널을 엽니다. ~/project 디렉토리에 있는지 확인합니다.

javac를 사용하여 코드를 컴파일합니다.

javac NullCheckList.java

컴파일이 성공하면 (출력이 없으면 성공), java를 사용하여 컴파일된 코드를 실행합니다.

java NullCheckList

리스트에 null이 포함되어 있는지 여부를 나타내는 출력을 볼 수 있습니다.

Null 확인을 위한 리스트 순회 (Loop)

이전 단계에서는 contains() 메서드를 사용하여 리스트에 null이 포함되어 있는지 확인했습니다. 간단하지만, 이 메서드는 null이 존재하는지 여부만 알려줄 뿐, 어디에 있는지 또는 몇 번이나 나타나는지는 알려주지 않습니다. 리스트에서 null 요소를 처리하는 더 일반적이고 유연한 방법은 루프를 사용하여 리스트를 반복하고 각 요소를 개별적으로 확인하는 것입니다.

이 단계에서는 NullCheckList.java 프로그램을 수정하여 리스트를 반복하고 null 요소의 위치 (인덱스) 를 식별합니다.

WebIDE 편집기에서 NullCheckList.java 파일을 엽니다. 기존 main 메서드를 다음 코드로 바꿉니다.

import java.util.List;
import java.util.ArrayList;

public class NullCheckList {

    public static void main(String[] args) {
        // Create a List and add some elements, including null
        List<String> names = new ArrayList<>();
        names.add("Alice");
        names.add(null); // Adding a null element
        names.add("Bob");
        names.add("Charlie");
        names.add(null); // Adding another null element

        System.out.println("Checking list for null elements:");

        // Loop through the list using a for loop
        for (int i = 0; i < names.size(); i++) {
            // Get the element at the current index
            String name = names.get(i);

            // Check if the element is null
            if (name == null) {
                System.out.println("Null found at index: " + i);
            }
        }
    }
}

변경 사항을 살펴보겠습니다.

  • 여러 null을 찾는 것을 보여주기 위해 리스트에 다른 null 요소를 추가했습니다.
  • for (int i = 0; i < names.size(); i++): 이는 인덱스 0부터 names 리스트의 크기 (포함하지 않음) 까지 반복하는 표준 for 루프입니다. 변수 i는 현재 인덱스를 나타냅니다.
  • String name = names.get(i);: 루프 내부에서 names.get(i)는 현재 인덱스 i의 요소를 검색하여 name 변수에 저장합니다.
  • if (name == null): 이것이 중요한 확인입니다. 동등 연산자 ==를 사용하여 name 변수를 null과 비교합니다. 두 값이 같으면 현재 인덱스의 요소가 null임을 의미합니다.
  • System.out.println("Null found at index: " + i);: null이 발견되면 이 줄은 null이 발견된 인덱스를 나타내는 메시지를 출력합니다.

파일을 저장합니다 (Ctrl+S 또는 Cmd+S).

이제 ~/project 디렉토리의 터미널에서 수정된 프로그램을 컴파일하고 실행합니다.

javac NullCheckList.java
java NullCheckList

리스트에서 null 요소가 발견된 인덱스를 나타내는 출력을 볼 수 있습니다.

Checking list for null elements:
Null found at index: 1
Null found at index: 4

이 접근 방식은 리스트의 null 요소에 대한 더 자세한 정보를 제공하며, 이는 프로그램에서 적절하게 처리하는 데 종종 필요합니다.

여러 Null 요소 처리

이전 단계에서는 리스트를 성공적으로 반복하고 null 요소의 인덱스를 식별했습니다. 이제 이를 확장하여 이러한 null 요소를 처리하는 방법을 보여드리겠습니다. "처리"는 프로그램의 논리에 따라 null 요소를 건너뛰거나, 기본값으로 바꾸거나, 특정 작업을 수행하는 등 다양한 의미를 가질 수 있습니다.

이 단계에서는 NullCheckList.java 프로그램을 다시 수정합니다. 이번에는 리스트를 반복하고 null 요소와 비교하여 null이 아닌 요소에 대해 다른 메시지를 출력합니다.

WebIDE 편집기에서 NullCheckList.java 파일을 엽니다. 기존 main 메서드를 다음 코드로 바꿉니다.

import java.util.List;
import java.util.ArrayList;

public class NullCheckList {

    public static void main(String[] args) {
        // Create a List and add some elements, including null
        List<String> names = new ArrayList<>();
        names.add("Alice");
        names.add(null); // Adding a null element
        names.add("Bob");
        names.add("Charlie");
        names.add(null); // Adding another null element
        names.add("David");

        System.out.println("Processing list elements:");

        // Loop through the list using a for-each loop
        for (String name : names) {
            // Check if the element is null
            if (name == null) {
                System.out.println("Found a null element, skipping.");
            } else {
                // If the element is not null, process it
                System.out.println("Processing name: " + name);
            }
        }
    }
}

이 버전의 변경 사항을 살펴보겠습니다.

  • 리스트에 null이 아닌 요소 하나 더 추가했습니다. ("David")
  • for (String name : names): 이는 향상된 for 루프 (for-each 루프라고도 함) 입니다. 인덱스를 사용하지 않고 컬렉션의 요소를 반복하는 편리한 방법입니다. 각 반복에서 변수 namenames 리스트의 현재 요소를 저장합니다.
  • if (name == null): 여전히 == 연산자를 사용하여 현재 요소 (name) 가 null인지 확인합니다.
  • System.out.println("Found a null element, skipping.");: 요소가 null이면 건너뛰고 있음을 나타내는 메시지를 출력합니다. 실제 애플리케이션에서는 null 을 로깅하거나 기본값을 할당하는 등 다른 작업을 수행할 수 있습니다.
  • else { System.out.println("Processing name: " + name); }: 요소가 null아닌 경우 else 블록에 들어가 null이 아닌 이름을 처리하고 있음을 나타내는 메시지를 출력합니다.

파일을 저장합니다 (Ctrl+S 또는 Cmd+S).

이제 ~/project 디렉토리의 터미널에서 수정된 프로그램을 컴파일하고 실행합니다.

javac NullCheckList.java
java NullCheckList

null이 아닌 이름을 처리하고 null 요소가 발견될 때를 나타내는 출력을 볼 수 있습니다.

Processing list elements:
Processing name: Alice
Found a null element, skipping.
Processing name: Bob
Processing name: Charlie
Found a null element, skipping.
Processing name: David

이 예제는 반복 중에 null 요소를 처리하는 기본적인 방법을 보여줍니다. 특정 요구 사항에 따라 null을 기본 문자열로 바꾸거나, 리스트에서 null 요소를 제거하거나, 다른 작업을 수행할 수 있습니다. 핵심은 요소 사용을 시도하기 전에 null을 확인하는 것입니다. null 객체에서 메서드를 호출하려고 하면 NullPointerException이 발생하기 때문입니다.

요약

이 Lab 에서는 Java List에 null 요소가 포함되어 있는지 확인하는 방법을 배웠습니다. 단일 null 요소의 존재를 결정하는 간단한 방법을 제공하는 인수로 null을 사용하여 contains() 메서드를 사용하는 방법을 살펴보았습니다.

샘플 ArrayList를 생성하고 유효한 요소와 null 값을 모두 추가한 다음 names.contains(null)을 사용하여 확인을 수행했습니다. 결과는 콘솔에 출력되어 리스트 내에서 기본 null 확인에 대한 이 메서드의 효과를 보여주었습니다.