Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

자바(Java)로 배열에 특정 값이 포함되어 있는지 확인하는 방법

이 글에서는 자바(Java)에서 배열에 특정 값이 포함되어 있는지 확인하는 방법을 살펴봅니다. 가장 기본적인 방식은 배열의 각 요소를 반복하면서 찾고자 하는 입력값과 하나씩 비교하는 것입니다.

아래는 그 동작 방식을 보여주는 예시입니다.

입력

검색할 숫자: 25
정수 배열의 요소:
15 20 25 30 35

출력

배열에 해당 값이 포함되어 있습니다

알고리즘

  1. 시작합니다.
  2. 정수형 변수 my_input, i, array_size를 선언하고, 불리언 변수 my_check와 정수 배열 my_array를 정의합니다.
  3. 사용자로부터 필요한 값을 입력받거나 값을 직접 정의합니다.
  4. for 루프를 사용해 배열 요소를 순회하면서 입력값과 배열의 각 값을 비교합니다.
  5. 값이 일치하면 해당 요소가 배열에 존재하는 것이고, 끝까지 일치하는 값이 없다면 존재하지 않는 것입니다.
  6. 결과를 출력합니다.
  7. 종료합니다.

예제 1: 사용자로부터 입력받는 경우

이 예제에서는 Scanner 클래스를 사용해 검색할 숫자, 배열의 크기, 배열의 요소를 차례로 입력받은 뒤, for 루프로 값의 포함 여부를 확인합니다.

import java.util.Scanner;
public class Main {
   public static void main(String[] args) {
      int my_input, i, array_size;
      boolean my_check = false;
      System.out.println("필요한 패키지를 임포트했습니다");
      Scanner my_scanner = new Scanner(System.in);
      System.out.println("Scanner 객체가 생성되었습니다");
      System.out.println("검색할 숫자를 입력하세요");
      my_input = my_scanner.nextInt();
      System.out.print("배열의 크기를 입력하세요: ");
      array_size = my_scanner.nextInt();
      int my_array[] = new int[array_size];
      System.out.println("배열의 요소를 입력하세요:");
      for (i = 0; i < array_size; i++) {
         my_array[i] = my_scanner.nextInt();
      }
      for (i = 0; i < array_size; i++) {
         if (my_array[i] == my_input) {
            my_check = true;
            break;
         }
      }
      if (my_check)
         System.out.println("\n배열에 해당 값이 포함되어 있습니다");
      else
         System.out.println("\n배열에 해당 값이 포함되어 있지 않습니다");
   }
}

실행 결과

필요한 패키지를 임포트했습니다
Scanner 객체가 생성되었습니다
검색할 숫자를 입력하세요
25
배열의 크기를 입력하세요: 5
배열의 요소를 입력하세요:
10
15
20
25
30
배열에 해당 값이 포함되어 있습니다

예제 2: 값이 미리 정의된 경우

이 예제에서는 검색할 숫자와 배열이 코드 안에서 미리 정의되어 있으며, 이를 콘솔에 출력한 후 포함 여부를 확인합니다.

public class Main {
   public static void main(String[] args) {
      int[] my_array = {15, 20, 25, 30, 35, 40};
      int my_input, i, array_size;
      array_size = 6;
      my_input = 25;
      boolean my_check = false;
      System.out.println("검색할 숫자: " + my_input);
      System.out.println("정수 배열의 요소:");
      for (i = 0; i < array_size; i++) {
         System.out.print(my_array[i] + " ");
      }
      for (i = 0; i < array_size; i++) {
         if (my_array[i] == my_input) {
            my_check = true;
            break;
         }
      }
      if (my_check)
         System.out.println("\n배열에 해당 값이 포함되어 있습니다");
      else
         System.out.println("\n배열에 해당 값이 포함되어 있지 않습니다");
   }
}

실행 결과

검색할 숫자: 25
정수 배열의 요소:
15 20 25 30 35 40
배열에 해당 값이 포함되어 있습니다

더 간단한 대안: Arrays.asList()와 스트림 API

반복문을 직접 작성하는 대신 자바 표준 API를 활용하면 코드를 훨씬 간결하게 만들 수 있습니다.

Arrays.asList() 사용 (객체 배열)

import java.util.Arrays;

public class Main {
   public static void main(String[] args) {
      Integer[] my_array = {15, 20, 25, 30, 35};
      boolean result = Arrays.asList(my_array).contains(25);
      System.out.println("배열에 해당 값이 포함되어 있습니까? " + result);
   }
}

단, Arrays.asList()는 int와 같은 기본형(primitive) 배열에는 적용할 수 없으므로 Integer 같은 래퍼 클래스 배열을 사용해야 합니다.

스트림(Stream) API 사용 (기본형 배열)

import java.util.stream.IntStream;

public class Main {
   public static void main(String[] args) {
      int[] my_array = {15, 20, 25, 30, 35};
      boolean result = IntStream.of(my_array).anyMatch(x -> x == 25);
      System.out.println("배열에 해당 값이 포함되어 있습니까? " + result);
   }
}

학습 목적이라면 for 루프를 이용한 기본 구현부터 익혀두는 것이 좋고, 실무에서는 Arrays.asList()나 스트림 API처럼 간결한 방식을 활용하는 편이 효율적입니다.