[JAVA] 배열에서 특정 값 찾기

SangJin Ham·2024년 2월 4일
0

JAVA

목록 보기
13/15
post-thumbnail

배열에서 특정 값 찾기

이번 포스팅에서 배열에서 특정 값을 찾는 여러 방법을 알아보자 !


반복문

가장 기본적인 문법인 반복문을 사용하여 배열에 특정 값이 존재하는지 확인할 수 있다.

여기선 for문을 사용해 배열의 요소에 접근하고, equals() 메소드를 사용해 특정 값을 비교하는 식으로 찾아보자

String[] strArr = {"AB", "BC", "BCD", "CD", "CDEF"};
String target = "AB";

for (String str : strArr){
	if(str.equals(target)){
    	System.out.println(target + "는 strArr에 존재합니다.");
    }
}
  • 출력 결과 : AB는 strArr에 존재합니다.

List 변환 후 찾기

배열을 List로 변환 후 List 클래스에서 제공하는 메소드들을 사용해 특정 값이 존재하는지, 어느 위치에 있는지 찾을 수 있다.

  • contains() : 특정 값이 List에 포함되어 있으면 true를 반환하고, 그렇지 않다면 false를 반환한다.
  • containsAll(targetList tl) : 전달받은 targetList의 값 중 하나라도 List에 포함되어 있으면 true를 반환하고, 그렇지 않다면 false를 반환한다.
  • indexOf() : 특정 값이 List에 포함되어 있으면 가장 첫 번째 값의 index를 반환하고, 그렇지 않다면 -1를 반환한다.
import java.util.*;

// strArr[1], strArr[3]에 "BC"
String[] strArr = {"AB", "BC", "BCD", "BC", "CDEF"};
String target = "BC";
List<String> targetList = Arrays.asList("AB", "BC");

List<String> strList = new ArrayList<>(Arrays.asList(strArr));

// "BC"가 strList에 포함되어 있는지 - contains()
if(strList.contains(target)){
	System.out.println(target + "는 strList에 존재합니다.");
}

// "AB"나 "BC"가 strList에 하나라도 포함되어 있는지 - containsAll()
if(strList.containsAll(targetList)){
	System.out.println(target + "는 strList에 존재합니다.");
}

// "BC"가 strList에 포함되어 있는지 - indexOf()
if(strList.indexOf(target) != -1){
	// "BC"의 첫 번째 인덱스를 포함해 출력
	System.out.println(target + "는 strList에 존재하며, " + target + "의 첫 번째 인덱스는 " + Integer.toString(strList.indexOf(target)) + "입니다.");
}
  • 출력 결과
BC는 strList에 존재합니다.
[AB, BC]는 strList에 존재합니다.
BC는 strList에 존재하며, BC의 첫 번째 인덱스는 1입니다.

Stream API의 anyMatch 메소드

Java의 버전이 1.8 이상인 경우 Stream API의 anyMatch() 메소드를 사용할 수 있다.

배열을 스트림으로 변환 후, anyMatch() 메소드를 호출한다.

  • anyMatch() : 특정 값을 확인하는 람다식 또는 메소드 참조식을 전달해 특정 값이 있는지 확인해서 있다면, true를 반환하고, 그렇지 않다면 false를 반환한다.
import java.util.*;

String[] strArr = {"AB", "BC", "BCD", "CD", "CDEF"};
String target = "BC";

boolean isExist = Arrays.stream(strArr).anyMatch(target::equals);

// "BC"가 strList에 포함되어 있는지
if(isExist){
	System.out.println(target + "는 strArr에 존재합니다.");
}
  • 출력 결과
BC는 strArr에 존재합니다.

배열 정렬 후 binarySearch() 메소드

Arrays 클래스의 sort()parallelSort() 메소드를 사용해 배열을 정렬하고, binarySearch() 메소드를 사용해 특정 값이 있는지 확인한다.

  • binarySearch(배열, 특정 값) : 전달받은 배열에서 특정 값이 있는지 확인해 있다면 특정 값의 위치(index)를 반환하고, 그렇지 않다면 -1을 반환한다.
import java.util.*;

String[] strArr = {"AB", "BC", "BCD", "CD", "CDEF"};
String target = "BC";

System.out.println("정렬 전 " + Arrays.toString(strArr));

Arrays.sort(strArr);

System.out.println("정렬 후 " + Arrays.toString(strArr));

// "BC"가 strList에 포함되어 있다면 index, 아니라면 -1
int findIndex = Arrays.binarySearch(strArray, target);


if(findIndex != -1){
	System.out.println(target + "는 strArr에 존재합니다.");
}
  • 출력 결과
BC는 strArr에 존재합니다.
profile
끄적끄적

0개의 댓글