Vienna

Chapter 11) 컬렉션 프레임워크 - Arrays 본문

언어/Java의 정석

Chapter 11) 컬렉션 프레임워크 - Arrays

아는개발자 2023. 5. 5. 15:03

◇ 배열의 String화

* toString: 일차원 배열 String화

* deepToString: 다차원 배열 String화 

import java.util.Arrays;

public class Main {

    public static void main(String[] args) {
        int[] arr = {0,1,2,3,4};

        System.out.println("Arrays.toString(arr) = " + Arrays.toString(arr));
    }
}

실행 결과

◇ 배열의 복사

* copyOf(): 배열의 전체를 복사

* copyOfRange(): 배열의 일부를 복사

import java.util.Arrays;

public class Main {

    public static void main(String[] args) {
        int[] arr = {0,1,2,3,4};

        int[] copiedArr = Arrays.copyOf(arr, arr.length);
        System.out.println("Arrays.toString(copiedArr) = " + Arrays.toString(copiedArr));

        int[] copiedArr2 = Arrays.copyOfRange(arr, 2, 4);
        System.out.println("Arrays.toString(copiedArr) = " + Arrays.toString(copiedArr2));
    }
}

실행 결과

◇ 배열 채우기

* fill(): 배열의 모든 요소를 특정 값으로만 채우기

* setAll: 배열의 모든 요소를 특정 함수로 채우기

import java.util.Arrays;

public class Main {

    public static void main(String[] args) {
        int[] arr = new int[5];
        Arrays.fill(arr, 7);
        System.out.println("Arrays.toString(arr) = " + Arrays.toString(arr));

        int[] arr2 = new int[7];
        Arrays.setAll(arr2, i-> (int)(Math.random()*6)+1);
        System.out.println("Arrays.toString(arr2) = " + Arrays.toString(arr2));
    }
}

실행 결과

◇ 배열 요소 비교

* equals: 주소값 비교(일차원 배열의 경우에는 요소 비교)

* deepEquals: 다차원배열의 모든 요소 비교

import java.util.*;

public class Main {

    public static void main(String[] args) {
        String[][] arr2D1 = new String[][]{{"aaa","bbb"}};
        String[][] arr2D2 = new String[][]{{"aaa","bbb"}};

        System.out.println("arr2D1.equals(arr2D2) = " + Arrays.equals(arr2D1, arr2D2));
        System.out.println("arr2D1.equals(arr2D2) = " + Arrays.deepEquals(arr2D1, arr2D2));
    }
}

실행 결과

◇ 배열의 정렬과 검색

sort(): 정렬

import java.util.Arrays;

public class Main {

    public static void main(String[] args) {
        int[] arr = {3,2,0,1,4};
        System.out.println("Arrays.toString(arr) = " + Arrays.toString(arr));
        Arrays.sort(arr);
        System.out.println("Arrays.toString(arr) = " + Arrays.toString(arr));
    }
}

binarySearch(): 이진검색

import java.util.Arrays;

public class Main {

    public static void main(String[] args) {
        int[] arr = {3,2,0,1,4};

        int index = Arrays.binarySearch(arr, 2);
        System.out.println("Arrays.binarySearch(arr, 2) = " + index);

        Arrays.sort(arr);

        index = Arrays.binarySearch(arr, 2);
        System.out.println("Arrays.binarySearch(arr, 2) = " + index);
    }
}

실행 결과. 이진 검색 함수를 사용하기 이전에 미리 정렬이 필요함을 알 수 있다.

◇ 배열을 List로 변환

asList(): 배열을 List에 담아서 반환

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Main {

    public static void main(String[] args) {
        int[] arr = {3,2,0,1,4};

        List list = Arrays.asList(arr);

        List list2 = new ArrayList(Arrays.asList(1, 2, 3, 4, 5));
    }
}

 

Comments