웹사이트 검색

Java 배열에 값이 포함되어 있는지 확인하는 방법은 무엇입니까?


Java 배열에 값이 포함되어 있는지 확인하는 방법은 무엇입니까?

Java 배열에 특정 값이 포함되어 있는지 확인하는 방법에는 여러 가지가 있습니다.

  • for 루프를 사용한 간단한 반복
  • List contains() 메서드
  • anyMatch() 메서드 스트리밍
  • 정렬된 배열에 대한 배열 binarySearch()

이 모든 방법을 한 번에 하나씩 살펴보겠습니다.

1. For 루프 사용

배열에 특정 값이 포함되어 있는지 여부를 확인하는 가장 쉽고 편리한 방법입니다. equals() 메서드를 사용하여 배열 요소를 검토하여 배열 요소가 주어진 값과 같은지 확인합니다.

String[] vowels = { "A", "I", "E", "O", "U" };

// using simple iteration over the array elements
for (String s : vowels) {
	if ("E".equals(s)) {
		System.out.println("E found in the vowels list.");
	}
}

2. List contains() 메서드 사용

JShell을 사용하여 예제 코드 조각을 실행할 수 있습니다.

jshell> String[] vowels = { "A", "I", "E", "O", "U" };
vowels ==> String[5] { "A", "I", "E", "O", "U" }

jshell> List vowelsList = Arrays.asList(vowels);
vowelsList ==> [A, I, E, O, U]

jshell> vowelsList.contains("U")
$3 ==> true

jshell> vowelsList.contains("X")
$4 ==> false

3. 스트림 anyMatch() 메서드 사용

주어진 값이 포함되어 있는지 확인하기 위해 람다 식을 사용하는 경우.

jshell> List vowelsList = Arrays.asList(vowels);
vowelsList ==> [A, I, E, O, U]

jshell> Arrays.stream(vowels).anyMatch("O"::equals);
$5 ==> true

jshell> Arrays.stream(vowels).anyMatch("X"::equals);
$6 ==> false

4. 정렬된 배열에 대한 배열 binarySearch()

배열이 정렬된 경우 Arrays binarySearch() 메서드를 사용하여 배열에 주어진 값이 포함되어 있는지 확인할 수 있습니다.

String[] vowels = { "A", "I", "E", "O", "U" };

System.out.println("Unsorted Array = " + Arrays.toString(vowels));

Arrays.parallelSort(vowels);

System.out.println("Sorted Array = " + Arrays.toString(vowels));

int index = Arrays.binarySearch(vowels, "X");

if (index < 0) {
	System.out.println("X not found in the array");
} else {
	System.out.println("X found in the array");
}

산출:

Unsorted Array = [A, I, E, O, U]
Sorted Array = [A, E, I, O, U]
X not found in the array

배열에 여러 값이 포함되어 있는지 확인

배열에 여러 값이 포함되어 있는지 확인하려면 어떻게 해야 합니까? 주어진 배열이 원본 배열의 하위 집합인지 확인하고 싶다고 가정해 보겠습니다. 중첩 루프를 만들고 각 요소를 하나씩 확인할 수 있습니다. 배열을 목록으로 변환한 다음 containsAll() 메서드를 사용하는 더 깔끔한 방법이 있습니다.

String[] vowels = { "A", "I", "E", "O", "U" };
String[] subset = { "E", "U" };

boolean foundAll = Arrays.asList(vowels).containsAll(Arrays.asList(subset));

System.out.println("vowels contains all the elements in subset = " + foundAll);

결과: 모음은 부분집합 = true의 모든 요소를 포함합니다.

참조

  1. 배열 binarySearch() API 문서
  2. anyMatch() API 문서 스트리밍