극동대학교\AI컴퓨터공학과\JAVA

Arrays.

sundori 2023. 5. 17. 20:16

목차

     

    #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) 전달받은 배열의 모든 요소를 오름차순으로 정렬함.

    (출처 :  http://www.tcpschool.com/java/java_api_arrays )  

     

    '극동대학교\AI컴퓨터공학과\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