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

2021-01-27


자바에서 배열을 사용하다 보면, 자신이 원하는 데이터를 찾고 싶을 때가 있을 것이다. 이를 반복문 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에 담아주었다.)

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


- 기타

 

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 문으로 예외처리를 해주면 좀 더 디버깅하는 측면에서 수월할 수 있다.