Java 에서 리스트가 특정 요소를 포함하는지 확인하는 방법

JavaBeginner
지금 연습하기

소개

이 랩에서는 Java List 내에 특정 요소가 존재하는지 확인하는 방법을 배우게 됩니다. 데이터 컬렉션으로 작업할 때 이 일반적인 작업을 수행하기 위한 다양한 방법을 살펴보겠습니다.

먼저 List 인터페이스에서 제공하는 편리한 contains() 메서드를 사용하는 방법을 배우게 됩니다. 그 다음, 특정 시나리오에서 유용할 수 있는, 요소를 확인하기 위해 리스트를 수동으로 반복하는 방법을 이해하게 됩니다. 마지막으로, 이러한 검사를 수행할 때 리스트 내의 null 요소 처리에 대해 다루겠습니다.

contains() 를 사용하여 요소 확인

이 단계에서는 contains() 메서드를 사용하여 Java List에 특정 요소가 존재하는지 확인하는 방법을 배우겠습니다. 이는 데이터 컬렉션으로 작업할 때 일반적인 작업입니다.

먼저, ~/project 디렉토리에 ListContains.java라는 새 Java 파일을 생성해 보겠습니다. 왼쪽의 파일 탐색기에서 마우스 오른쪽 버튼을 클릭하고 "새 파일"을 선택한 다음 ListContains.java를 입력하여 이 작업을 수행할 수 있습니다.

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

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

public class ListContains {

    public static void main(String[] args) {
        // Create a List of strings
        List<String> fruits = new ArrayList<>();

        // Add some fruits to the list
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Orange");
        fruits.add("Mango");

        // Check if the list contains "Banana"
        boolean hasBanana = fruits.contains("Banana");
        System.out.println("Does the list contain Banana? " + hasBanana);

        // Check if the list contains "Grape"
        boolean hasGrape = fruits.contains("Grape");
        System.out.println("Does the list contain Grape? " + hasGrape);
    }
}

이 코드를 자세히 살펴보겠습니다.

  • import java.util.ArrayList;import java.util.List;: 이 줄은 List 로 작업하는 데 필요한 클래스를 가져옵니다.
  • List<String> fruits = new ArrayList<>();: 이 줄은 String 객체를 저장할 수 있는 List 유형인 새 ArrayList를 생성합니다.
  • fruits.add("...");: 이 줄은 요소 (과일 이름) 를 목록에 추가합니다.
  • fruits.contains("Banana");: 이것이 이 단계의 핵심입니다. contains() 메서드는 fruits 목록에서 호출됩니다. 인수를 하나 받는데, 이는 우리가 확인할 요소입니다. 요소가 목록에 있으면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
  • boolean hasBanana = ...;: contains()의 결과는 부울 변수 (hasBanana 또는 hasGrape) 에 저장됩니다.
  • System.out.println("...");: 이 줄은 결과를 콘솔에 출력합니다.

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

이제 WebIDE 하단의 터미널을 엽니다. ~/project 디렉토리에 있는지 확인합니다. 그렇지 않은 경우 cd ~/project를 입력하고 Enter 키를 누릅니다.

javac 명령을 사용하여 Java 코드를 컴파일합니다.

javac ListContains.java

오류가 없으면 ~/project 디렉토리에 ListContains.class 파일이 생성됩니다.

마지막으로, java 명령을 사용하여 컴파일된 Java 프로그램을 실행합니다.

java ListContains

다음과 유사한 출력을 볼 수 있습니다.

Does the list contain Banana? true
Does the list contain Grape? false

이 출력은 contains() 메서드가 "Banana"와 "Grape"가 목록에 있는지 여부를 올바르게 식별했음을 확인합니다.

리스트 수동으로 순회하기

이전 단계에서는 contains() 메서드를 사용하여 요소를 확인했습니다. contains()는 편리하지만, 때로는 리스트의 각 요소를 하나씩 검사해야 할 필요가 있습니다. 이를 리스트를 반복 또는 루프 (loop) 라고 합니다. 이 단계에서는 for 루프를 사용하여 이 작업을 수행하는 방법을 배우겠습니다.

WebIDE 편집기에서 ~/project 디렉토리의 ListContains.java 파일을 엽니다.

fruits 리스트를 반복하고 각 요소를 출력하도록 기존 코드를 수정합니다. 기존 main 메서드를 다음 코드로 바꿉니다.

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

public class ListContains {

    public static void main(String[] args) {
        // Create a List of strings
        List<String> fruits = new ArrayList<>();

        // Add some fruits to the list
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Orange");
        fruits.add("Mango");

        // Loop through the list using a for loop
        System.out.println("Printing fruits in the list:");
        for (int i = 0; i < fruits.size(); i++) {
            String fruit = fruits.get(i);
            System.out.println(fruit);
        }
    }
}

새로운 부분을 살펴보겠습니다.

  • System.out.println("Printing fruits in the list:");: 이 줄은 과일을 나열하기 전에 단순히 헤더를 출력합니다.
  • for (int i = 0; i < fruits.size(); i++): 이것은 표준 for 루프입니다.
    • int i = 0: 카운터 변수 i를 0 으로 시작합니다. 프로그래밍에서 종종 0 부터 계산을 시작합니다.
    • i < fruits.size(): 루프는 ifruits 리스트의 총 요소 수보다 작은 동안 계속됩니다. fruits.size()는 요소 수를 제공합니다.
    • i++: 루프가 실행될 때마다 i의 값을 1 씩 증가시킵니다.
  • String fruit = fruits.get(i);: 루프 내부에서 fruits.get(i)는 현재 위치 i에서 리스트의 요소를 검색합니다. 이 요소를 fruit이라는 String 변수에 저장합니다.
  • System.out.println(fruit);: 이 줄은 현재 fruit를 콘솔에 출력합니다.

ListContains.java 파일을 저장합니다.

이제 터미널에서 수정된 코드를 컴파일합니다.

javac ListContains.java

컴파일이 성공하면 프로그램을 실행합니다.

java ListContains

다음 출력을 볼 수 있습니다.

Printing fruits in the list:
Apple
Banana
Orange
Mango

이것은 for 루프가 리스트를 성공적으로 반복하고 각 과일을 새 줄에 출력했음을 보여줍니다. 이처럼 리스트를 수동으로 반복하면 각 요소를 처리하는 방식을 더 잘 제어할 수 있으며, 이는 존재 여부 확인보다 더 복잡한 작업에 유용할 수 있습니다.

리스트 내 Null 요소 처리

실제 세계에서 리스트는 때때로 값의 부재를 나타내는 "null" 값을 포함할 수 있습니다. 확인하지 않고 null 값에 대한 작업을 수행하려고 하면 프로그램이 NullPointerException으로 인해 충돌할 수 있습니다. 이 단계에서는 리스트를 반복할 때 null 요소를 처리하는 방법을 배우겠습니다.

WebIDE 편집기에서 ~/project 디렉토리의 ListContains.java 파일을 엽니다.

리스트에 null 요소를 추가한 다음 루프 내에서 null 을 확인하도록 코드를 수정합니다. 기존 main 메서드를 다음 코드로 바꿉니다.

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

public class ListContains {

    public static void main(String[] args) {
        // Create a List of strings
        List<String> fruits = new ArrayList<>();

        // Add some fruits to the list, including a null
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add(null); // Adding a null element
        fruits.add("Orange");
        fruits.add("Mango");

        // Loop through the list and handle null elements
        System.out.println("Printing fruits in the list (handling nulls):");
        for (int i = 0; i < fruits.size(); i++) {
            String fruit = fruits.get(i);

            // Check if the element is null before processing
            if (fruit != null) {
                System.out.println(fruit);
            } else {
                System.out.println("Found a null element");
            }
        }
    }
}

변경 사항은 다음과 같습니다.

  • fruits.add(null);: 리스트에 null 값을 추가했습니다.
  • if (fruit != null): 루프 내에서 fruit를 출력하기 전에 fruit 변수가 null 이 아닌지 확인하기 위해 if 문을 추가합니다.
  • System.out.println(fruit);: 이 줄은 if 블록 내에 있으므로 fruit가 null 이 아닌 경우에만 실행됩니다.
  • else { System.out.println("Found a null element"); }: 이 else 블록은 fruit가 null 인 경우 실행되어 null 값 자체를 출력하는 대신 메시지를 출력합니다.

ListContains.java 파일을 저장합니다.

터미널에서 수정된 코드를 컴파일합니다.

javac ListContains.java

컴파일이 성공하면 프로그램을 실행합니다.

java ListContains

다음 출력을 볼 수 있습니다.

Printing fruits in the list (handling nulls):
Apple
Banana
Found a null element
Orange
Mango

보시다시피, 이제 프로그램은 충돌 없이 null 요소를 올바르게 식별하고 처리합니다. null 을 확인하는 것은 오류를 방지하고 프로그램을 더 강력하게 만들기 위해 Java 프로그래밍에서 중요한 관행입니다.

요약

이 랩에서는 Java List에 특정 요소가 포함되어 있는지 확인하는 방법을 배웠습니다. 먼저, 요소의 존재 여부를 효율적으로 결정하고 부울 (boolean) 결과를 반환하는 내장 contains() 메서드를 사용하여 가장 간단한 방법을 살펴보았습니다.

그런 다음, contains() 메서드가 내부적으로 어떻게 작동하는지에 대한 더 깊은 이해를 제공하면서, 확인을 수행하기 위해 리스트를 수동으로 반복하는 방법을 자세히 살펴보았습니다. 마지막으로, 이러한 확인을 수행할 때 리스트 내에서 null 요소를 처리하는 중요한 고려 사항을 다루어 강력하고 오류 없는 코드를 보장했습니다.