🌱 오늘의 주제 : Arrays의 메서드
🌱 Arrays의 메서드 - 복사
- Arrays.copyOf() - 배열 전체를 복사
- Arrays.copyOfRange() - 배열의 일부를 복사 , 범위의 끝은 포함되지 않는다.
int[] arr2 = Arrays.copyOf(arr, arr.length);
🌱 Arrays의 메서드 - 채우기, 정렬, 검색
- Arrays.fill() - 배열의 모든 요소를 지정된 값으로 채운다.
- Arrays.setAll() - 배열을 채우는데 사용할 함수형 인터페이스를 매개변수로 받는다. 함수형 인터페이스를 구현한 객체를 매개변수로 지정하던가 아니면 람다식을 지정해야 한다.
- Arrays.sort() - 배열을 정렬
- Arrays.binarySearch() - 배열에서 지정된 값이 저장된 위치(index)를 찾아서 반환, 반드시 배열이 정렬된 상태여야 올바른 결과를 얻음.
🌱 Arrays의 메서드 - 비교와 출력
- Arrays.toString() - 배열의 모든 요소를 문자열로 출력, 1차원 배열에서만 사용
- Arrays.deepToString() - 문자열로 출력, 2차원, 3차원이상 배열에 동작
- Arrays.equals(A, B) - 두 배열에 저장된 요소를 비교해서 같으면 true, 다르면 false 반환. 1차원 배열에서 사용가능
- Arrays.deepEquals(A,B) - 2차원, 3차원 배열에 동작.
🌱 Arrays의 메서드 - 배열을 List로 변환**
- Arrays.asList() - 배열을 List에 담아서 반환한다. 배열 생성없이 저장할 요소들만 나열 가능
- 한번 반환한 List의 크기는 변경 불가. 추가 또는 삭제 불가.
- 만약 크기 변경하고 싶으면 새로운 ArrayList생성해서 만들어야 됨. (아래 예제 참조)
List list = Arrays.asList(1,2,3,4,5);
List list = new ArrayList(Arrays.asList(1,2,3,4,5)); // 새로운 ArrayList생성해서 크기 변경.
🌱 Arrays의 메서드 예제
package chapter11_p;
import java.util.Arrays;
public class Ex11_6 {
public static void main(String[] args) {
// Arrays의 메서드 예제
int[] arr = {0,1,2,3,4};
int[][] arr2D = {{11,12,13}, {21,22,23}};
System.out.println("arr =" + Arrays.toString(arr));
System.out.println("arr2D = " + Arrays.deepToString(arr2D)); // Arrays.deepToString() 2차원 배열 복사.
int[] arr2 = Arrays.copyOf(arr, arr.length); // copyOf: 배열 전체 복사
int[] arr3 = Arrays.copyOf(arr2, 3);
int[] arr4 = Arrays.copyOf(arr, 7); // 0 ~6
int[] arr5 = Arrays.copyOfRange(arr, 2, 4); // 2~3 // 4는 포함 안됨.
int[] arr6 = Arrays.copyOfRange(arr, 0, 7); // 끝은 포함 안되고 복사. 즉 0~6
System.out.println("arr2 = " + Arrays.toString(arr2));
System.out.println("arr3 = " + Arrays.toString(arr3));
System.out.println("arr4 = " + Arrays.toString(arr4));
System.out.println("arr5 = " + Arrays.toString(arr5));
System.out.println("arr6 = " + Arrays.toString(arr6));
int[] arr7 = new int[5];
Arrays.fill(arr7, 9); // Arrays.fill 사용.
System.out.println("arr7 = " + Arrays.toString(arr7));
Arrays.setAll(arr7, i -> (int)(Math.random()*6) + 1); // Arrays.set 사용.
System.out.println("arr7 = " + Arrays.toString(arr7));
for(int i : arr7) { // 향상된 for문 : arr7 요소를 빼서 i에 집어 넣기.
char[] graph = new char[i];
Arrays.fill(graph, '*');
System.out.println(new String(graph) + i); // 생성자 사용..
}
String[][] str2D = new String[][] {{"aaa", "bbb"},{"AAA", "BBB"}};
String[][] str2D2 = new String[][] {{"aaa", "bbb"},{"AAA", "BBB"}};
System.out.println(Arrays.equals(str2D, str2D2)); // false // 2차원 배열이라서 equals 사용 불가.
System.out.println(Arrays.deepEquals(str2D, str2D2)); // true
char[] chArr = {'A', 'D', 'C', 'B', 'E'};
System.out.println("chArr = " + Arrays.toString(chArr));
System.out.println("index of B = " + Arrays.binarySearch(chArr, 'B')); // binarySearch는 정렬이 우선 되어야 되기 때문에, 오류남.
System.out.println("= After sorting = ");
Arrays.sort(chArr); // 정렬.
System.out.println("chArr = " + Arrays.toString(chArr)); // 정렬됨.
System.out.println("index of B = " + Arrays.binarySearch(chArr, 'B')); // 올바른 결과 나옴.
} // main
}
---------------
<결과>
arr =[0, 1, 2, 3, 4]
arr2D = [[11, 12, 13], [21, 22, 23]]
arr2 = [0, 1, 2, 3, 4]
arr3 = [0, 1, 2]
arr4 = [0, 1, 2, 3, 4, 0, 0]
arr5 = [2, 3]
arr6 = [0, 1, 2, 3, 4, 0, 0]
arr7 = [9, 9, 9, 9, 9]
arr7 = [6, 5, 6, 4, 6]
******6
*****5
******6
****4
******6
false
true
chArr = [A, D, C, B, E]
index of B = -2
= After sorting =
chArr = [A, B, C, D, E]
index of B = 1
'Java' 카테고리의 다른 글
Java - HashMap (0) | 2023.02.04 |
---|---|
Java - HashSet (0) | 2023.02.04 |
Java - LinkedList (0) | 2023.02.03 |
Java - ArrayList (0) | 2023.02.03 |
Java - 컬렉션 프레임웍의 핵심 인터페이스 (0) | 2023.02.03 |