가자미의 개발이야기

자바 Arrays 클래스 본문

Java/자바 기본 문법

자바 Arrays 클래스

가자미 2021. 1. 20. 16:22

a. Arrays 클래스

java.util.Arrays 에 정의되어 있는 클래스.

모든 메소드는 static(정적) 메소드이므로, Aarays 클래스로 바로 사용이 가능

b. 배열 복사 메소드

메소드 매개변수 반환 값 비고
int[] copyOf(int[] arr, int len) 원본 배열, 길이 원본의 특정 길이까지 복사된 배열 int말고도 다양한 배열 가능,
원본보다 더 길게 복사하면 기본값(0)으로 초기화
int[] copyOfRange(int[] arr, int start, int end) 원본 배열, 시작, 끝 원본의 시작~끝-1까지 복사 끝-1에 유의
int 말고도 다양한 배열 가능
void arraycopy(int[] arr, int index1, int[] arr2, int index2, int len) 원본배열, 원본 인덱스, 대상 배열, 대상 인덱스, 길이 원본 배열의 인덱스부터 길이까지 대상 배열의 인덱스부터 복사 다양한 배열가능
boolean equals(int[] arr1, int[] arr2) 원본배열, 비교되는 배열 두 배열의 내용이 같은지 참거짓 배열이 인스턴스를 저장한 배열인 경우 오버라이딩을 해줘야 한다.(그러지 않으면 참조주소 비교가 된다.)
void sort(int[] a) 원본배열   배열요소를 오름차로 정렬.
다양한 배열 가능
인스턴스 배열은 Comparable 인터페이스를 상속받아야 함.
int binarySearch(int[] a, int key) 원본배열, 찾으려는 값 찾으려는 값 인덱스 반환
없으면 -1 반환
반드시 오름차 졍렬이 되어 있어야 함
void fill(Object[] a, Object val) 대상 배열, 채우려는 값   대상 배열을 특정 값으로 가득 채움
<T> List<T> asList(T[] arr) 대상배열 고정된 List를 반환 제네릭 메소드

c. 복사 메소드

-public static int[] copyOf(int원본배열, 길이) 원본의 어느 길이까지 복사

-public static int[] copyOfRange(int원본배열,시작,끝) 원본의 시작부터 끝 전까지 복사

-public static void arraycopy(배열 arr1, int arr1pos, 배열 arr2, int arr2pos, int length) 배열 arr1의 arr1pos에서 배열 arr의 arr2pos로 length 만큼 복사

d. 내용 비교 메소드

-public static boolean equals(int[] a, int[] a2) 참조값을 비교하는 것이 아닌 배열의 내용을 비교

 

인스턴스 저장 배열의 비교

인스턴스를 저장한 배열은 내용이 같은 두 배열도 false가 나올 수 있다. 왜?

인스턴스끼리의 비교는 object클래스의 equals 메소드로 비교를 한다.

equals메소드를 오버라이딩 안할 경우- 참조값을 비교하는 메소드이기 때문!

내용을 비교하고 싶으면 오버라이딩을 하자..!

인스턴스가 저장된 배열을 비교하는 예시

e. 정렬 메소드

-public static void sort(int[] a) 오름차순으로 정렬

 

인스턴스 저장 배열의 정렬

-인스턴스의 경우 기준에 따라 오름차정렬이 달라질 수 있다.

-Comparable 인터페이스를 참고

-int compareTo(Object o){ }

-o보다 작다면 양의 정수

-o보다 크다면 음의 정수

-같다면 0을 반환하는 메소드를 오버라이딩하기로 약속!!

 

f. 배열의 탐색 메소드

-public static int binarySearch(int[] a, int key)

-있을경우 인덱스값 반환, 없으면 음수 반환

-오름차순으로 정렬되어 있어야함!

g. 인스턴스 저장 배열의 탐색

-public static int binarySearch(Object[] a, Object key)

-인스턴스 내용 비교를 통해 찾아냄(오름차순 정의 되어잇어야..)