[Java] 자바 Array(배열)에서 원하는 객체 찾기! binarySearch

2021-01-27


etc-image-0

자바에서 배열을 사용하다 보면, 자신이 원하는 데이터를 찾고 싶을 때가 있을 것이다. 이를 반복문 for / while문을 돌려가면 찾을 수도 있겠지만, 친절하게도 Arrays에서 이와 같은 문제를 해결하기 위한 기능을 제공한다. 사용방법은 아래와 같다.


- 선언

 

package Arrays_Search;

import java.util.Arrays;

public class main {

	public static void main(String[] args) {
		
		// 배열의 특정 인덱스값 추출하기
		// 배열의 특정 데이터를 입력하면,
		// 해당 데이터에 맞는 인덱스 넘버를 리턴해준다.
		
		String [] arr = {"a", "b", "c", "d","f"};
		
		int index = Arrays.binarySearch(arr, "d");
		// binarySearch를 사용하면된다. 
		// 매개 변수로는 1. 배열의 이름 , 2. 해당 배열의 찾고자 하는 데이터
		// 순서로 코드를 작성해주면 된다.
		
		System.out.println(index + " 에 해당하는 값 -> " + arr[index]);
	}

}

 

위와 같이 a ~ f 까지의 데이터를 가지는 String 배열을 선언해 주었다. 이후  Arrays에서 제공하는 binarySearch라는 메서드를 사용해주면 손쉽게 자신이 원하는 데이터를 찾을 수 있다. 매개 변수로는 주석에도 적어두었지만, 배열의 이름과 해당 배열에서 찾고자 하는 데이터 순으로 코드를 작성해 주면 된다. (리턴 값은 인트형이기 때문에 인트형 변수 index에 담아주었다.)

etc-image-1

위와 같이 자신의 찾는 데이터의 위치와 값을 출력해주면, 해당 데이터의 정보를 손쉽게 확인 할 수 있다.


- 기타

 

package Arrays_Search;

import java.util.Arrays;

public class main {

	public static void main(String[] args) {
		
		// 배열의 특정 인덱스값 추출하기
		// 배열의 특정 데이터를 입력하면,
		// 해당 데이터에 맞는 인덱스 넘버를 리턴해준다.
		
		String [] arr = {"a", "b", "c", "d","f"};
		
		int index = Arrays.binarySearch(arr, "d");
//		//binarySearch를 사용하면된다. 
//		// 매개 변수로는 1. 배열의 이름 , 2. 해당 배열의 찾고자 하는 데이터
//		// 순서로 코드를 작성해주면 된다.
//		
//		System.out.println(index + " 에 해당하는 값 -> " + arr[index]);
		
		System.out.println();
		System.out.println("=============================================");
		try {
			index = Arrays.binarySearch(arr, "g");
			
			System.out.println(index + " 에 해당하는 값 -> " + arr[index]);
		}catch (ArrayIndexOutOfBoundsException e) {
			System.out.println("ArrayIndexOutOfBoundsException 예외가 발생했습니다.");
		}
		
		

	}

}

 

다만 위의 예제처럼 "g"는 현재 배열에 존재하지 않는 데이터이다. 만약에 자신의 찾는 데이터가 존재하지 않을 경우에는 ArrayIndexOutOfBoundsException 예외가 발생하게 되며, 이러한 경우를 대비해서 try / catch 문으로 예외처리를 해주면 좀 더 디버깅하는 측면에서 수월할 수 있다.

etc-image-2