본문 바로가기

Java

[Java] Arrays - 배열을 쉽게 다루고 싶다면

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