Arrays
배열을 다루기 편리한 메서드(static) 제공
배열의 출력
toString( ): 오버라이딩 된 형식으로 배열을 출력해준다(ex. [1, 2, 3, 4, 5] )
배열의 복사
copyOf( ): 정해진 개수만큼 배열을 복사해준다.
copyOfRange( ): 정해진 범위까지 복사해준다.(from <= x < to)
배열 채우기
fill( ): 배열을 원하는 값으로 채운다.
setAll( ): 난수로 배열을 원하는 값으로 채운다.(람다식 사용)
배열의 정렬과 검색
sort( ): 배열을 정렬한다.
binarySearch( ): 이진 탐색(정렬되어 있을 때만 사용)
다차원 배열 출력
deepToString( ): 다차원 배열의 출력
다차원 배열의 비교
deepEquals( ): 다차원 배열의 비교
배열을 List로 변환
asList(가변 매개변수, ...): 배열을 리스트로 변환(읽기 전용, add 못함)
List list = Arrays.asList(new Interger[]{1, 2, 3, 4, 5};
List list = Arrays.asList(1, 2, 3, 4, 5);
list.add(6); // UnsupportedOperationException 예외 발생
List list = new ArrayList(Arrays.asList(1, 2, 3, 4, 5)); // 새로운 ArrayList
list.add(6); // OK
람다와 스트림 관련
parallelXXX( )
spliterator( )
stream( )
순차 탐색과 이진 검색
순차 탐색: 배열을 앞에서부터 순서대로 탐색
이진 탐색: 배열을 계속해서 반으로 나눠가면서 탐색
예제
public class Ex1 {
public static void main(String[] args) {
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));
int[] arr2 = Arrays.copyOf(arr, 5);
int[] arr3 = Arrays.copyOf(arr, 3); // 3개만 복사
int[] arr4 = Arrays.copyOf(arr, 7); // 나머지값 2개 0으로 채움
int[] arr5 = Arrays.copyOfRange(arr, 2, 4); // 2 <= x < 4
int[] arr6 = Arrays.copyOfRange(arr, 0, 7);
System.out.println("arr2 = " + arr2);
System.out.println("arr3 = " + arr3);
System.out.println("arr4 = " + arr4);
System.out.println("arr5 = " + arr5);
System.out.println("arr6 = " + arr6);
int[] arr7 = new int[5];
Arrays.fill(arr7, 9); // arr = [9, 9, 9, 9, 9]
System.out.println("arr7 = " + Arrays.toString(arr7));
Arrays.setAll(arr7, i -> (int)(Math.random() * 6) + 1);
System.out.println("arr7 = " + Arrays.toString(arr7));
for (int i: arr7) {
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
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'));
System.out.println("== After sorting ==");
Arrays.sort(chArr); // 배열을 정렬, binarySearch 하기전에는 반드시 정렬 먼저
System.out.println("index of B = " + Arrays.binarySearch(chArr, 'B'));
}
}
arr = [0, 1, 2, 3, 4]
arr2D = [[11, 12, 13], [21, 22, 23]]
arr2 = [I@1d81eb93
arr3 = [I@7291c18f
arr4 = [I@34a245ab
arr5 = [I@7cc355be
arr6 = [I@6e8cf4c6
arr7 = [9, 9, 9, 9, 9]
arr7 = [3, 4, 4, 1, 5]
***3
****4
****4
*1
*****5
false
true
chArr = [A, D, C, B, E]
index of B = -2
== After sorting ==
index of B = 1
'Java' 카테고리의 다른 글
[Java] HashSet 객체 중복제거, 집합 (0) | 2024.05.08 |
---|---|
[Java] Comparator와 Comparable 객체 정렬 (0) | 2024.05.08 |
[Java] Iterator, Listlterator, Enumeration (0) | 2024.05.07 |
[Java] Stack과 Queue (0) | 2024.05.07 |
[Java] LinkedList 특징 (0) | 2024.05.06 |