목차
#Arrays 클래스
java.util.Arrays 클래스
Arrays 클래스에는 배열을 다루기 위한 다양한 메서드가 포함되어 있다고 한다.
Arrays 클래스의 모든 메서드는 클래스 메소드(static method)이므로, 객체를 생성하지 않고도 바로 사용할 수 있다.
sort 메소드 정렬
class FirstJava {
public static void main(String[] args) {
int[] num_list = {5, 2, 1, 6};
Arrays.sort(num_list);
System.out.println(Arrays.toString(num_list));
}
}
-----------------------------
[1, 2, 5, 6]
copyOf 메소드 복사
copyOf(원본 배열, 복사할 요소의 개수);
class FirstJava {
public static void main(String[] args) {
int[] arr = {5, 2, 1, 6};
int[] arr1 = Arrays.copyOf(arr, 3);
System.out.println(Arrays.toString(arr1));
Arrays.sort(arr1);
System.out.println(Arrays.toString(arr1));
}
}
-------------------------------------------------
[5, 2, 1]
[1, 2, 5]
copyOfRange메서드 범위 복사
copyOfRange(복사의 대상 배열, 복사를 시작할 인덱스, 마지막으로 복사될 배열 요소의 바로 다음 인덱스)
class FirstJava {
public static void main(String[] args) {
int[] arr = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int[] arr1 = Arrays.copyOfRange(arr, 0, 11);
System.out.println(Arrays.toString(arr1));
}
}
--------------------------------
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
class FirstJava {
public static void main(String[] args) {
int[] arr = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int[] arr1 = Arrays.copyOfRange(arr, 3, 8);
System.out.println(Arrays.toString(arr1));
}
}
---------------------------
[3, 4, 5, 6, 7]
fill메서드 특정 값으로 채우기
fill(초기화할 배열, 초기값) -> 전달받은 배열의 모든 요소를 주어진 초기값으로 초기화.
class FirstJava {
public static void main(String[] args) {
int[] arr = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
System.out.println(Arrays.toString(arr));
Arrays.fill(arr, 0);
System.out.println(Arrays.toString(arr));
}
}
------------------------------------
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
setAll메서드 랜덤 갑으로 채우기
setAll(새로운 값으로 초기화할 배열, 값) -> 랜덤 값을 채우는 데 사용할 수 있다.
class FirstJava {
public static void main(String[] args) {
int[] arr = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
System.out.println(Arrays.toString(arr));
Arrays.setAll(arr, (i) -> (int)(Math.random()* 10) + 1);
System.out.println(Arrays.toString(arr));
}
}
----------------------------------------
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[4, 6, 10, 10, 8, 1, 5, 4, 1, 9, 4] // 난수 삽입 (1~10)
binarySearch() 이진 탐색 / 인덱스 값 반환하기
binarySearch(검색할 배열, 찾을 값) -> 찾을 숫자의 인덱스 값 반환.
단. 정렬되어 있어야 한다.
class FirstJava {
public static void main(String[] args) {
int[] arr = {0, 1, 2, 3, 4};
int[] arr1 = {3, 2, 0, 1, 4};
int arrIdx = Arrays.binarySearch(arr, 2);
int arrIdx1 = Arrays.binarySearch(arr1, 2);
System.out.println("arr 배열에 원소 값 2가 있는 인덱스:" + arrIdx);
System.out.println("arr1 배열에 원소 값 2가 있는 인덱스:" + arrIdx1);
Arrays.sort(arr1);
System.out.println("arr1 배열 정렬 완료 : " + Arrays.toString(arr1));
arrIdx1 = Arrays.binarySearch(arr1, 2);
System.out.println("arr1 배열에 원소 값 2가 있는 인덱스:" + arrIdx1);
}
}
--------------------------------------------------
arr 배열에 원소 값 2가 있는 인덱스:2
arr1 배열에 원소 값 2가 있는 인덱스:-5
arr1 배열 정렬 완료 : [0, 1, 2, 3, 4]
arr1 배열에 원소 값 2가 있는 인덱스:2
deepToString메서드 2차원 배열 출력할 때.
1차원 배열을 출력할 때는 Arrays.toString()을 사용하지만 2차원 배열을 출력할 때는 Arrays.deepToString을 사용해야 한다.
class FirstJava {
public static void main(String[] args) {
int[][] arr1 = {{0, 1},{2, 3}};
System.out.println("toSring 사용 결과:" + Arrays.toString(arr1));
System.out.println("deepToString 사용 결과:" + Arrays.deepToString(arr1));
}
}
-----------------------------------------------
toSring 사용 결과:[[I@75b84c92, [I@6bc7c054]
deepToString 사용 결과:[[0, 1], [2, 3]]
equals메서드 1차원 배열 비교
class FirstJava {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4};
int[] arr1 = {2, 1, 3, 4};
System.out.println("arr 배열과 arr1 배열 같은지비교 결과 :" + Arrays.equals(arr, arr1));
Arrays.sort(arr1);
System.out.println("arr 배열과 arr1 배열 같은지비교 결과 :" + Arrays.equals(arr, arr1));
}
}
---------------------------------------------------
arr 배열과 arr1 배열 같은지비교 결과 :false
arr 배열과 arr1 배열 같은지비교 결과 :true
deepEquals메서드 2차원 배열 비교.
class FirstJava {
public static void main(String[] args) {
int[][] arr = {{1, 2}, {3, 4}};
int[][] arr1 = {{2, 1}, {3, 4}};
System.out.println("arr 배열과 arr1 배열 같은지비교 결과 :" + Arrays.deepEquals(arr, arr1));
}
}
-------------------------------------
arr 배열과 arr1 배열 같은지비교 결과 :false
대표적인 Arrays 메소드
Arrays 클래스의 메서드는 매우 다양하며, 그중에서 많이 사용되는 메소드는 다음과 같다.
static <T> List<T> asList(T... a) | 전달받은 배열을 고정 크기의 리스트(list)로 변환하여 반환함. |
static int binarySearch(Object[] a, Object key) | 전달받은 배열에서 특정 객체를 이진 검색 알고리즘을 사용하여 검색한 후, 그 위치를 반환함. |
static <T> T[] copyOf(T[] original, int newLength) | 전달받은 배열을 특정 길이의 새로운 배열로 복사하여 반환함. |
static <T> T[] copyOfRange(T[] original, int from, int to) | 전달받은 배열의 특정 범위에 해당하는 요소만을 새로운 배열로 복사하여 반환함. |
static boolean equals(Object[] a, Object[] a2) | 전달받은 두 배열이 같은지를 확인함. |
static void fill(Object[] a, Object val) | 전달받은 배열의 모든 요소를 특정 값으로 초기화함. |
static void sort(Object[] a) | 전달받은 배열의 모든 요소를 오름차순으로 정렬함. |
'JAVA' 카테고리의 다른 글
4) 자바 8 (0) | 2023.12.23 |
---|---|
3) 자바 입출력문 (0) | 2023.12.23 |
2) 자바 프로그램 (0) | 2023.12.20 |
1) 자바 개념 (0) | 2023.12.20 |
Stream API이란. (0) | 2023.05.17 |