ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 컬렉션 - Arrays 클래스와 메서드
    백엔드/자바 2021. 5. 20. 16:56

    Arrays 클래스는 배열을 다루는데 유용한 메서드들이 정의되있다.

     

    모든 메서드가 모든 Static으로 별도로 객체를 생성없이도 언제든 사용이 가능하다.

    배열의 복사 - copyOf(), copyOfRange()

    copyOf()는 배열 전체를 복사해서 새로운 배열을 만들어서 반환한다.

     

    반면 copyOfRange()는 지정한 범위만큼 복사를 해서 새로운 배열을 반환한다.

     

    이때 copyOfRange()에 지정된 범위의 끝은 포함하지 않는다.

     

    public static void main(String[] args) {
    
            int arr [] = {0, 1, 2, 3, 4};
    
            int arr1 [] = Arrays.copyOf(arr, arr.length); // {0, 1, 2, 3, 4}
            int arr2 [] = Arrays.copyOf(arr, 3); // {0, 1, 2}
    
            int arr3 [] = Arrays.copyOfRange(arr, 2,4); // {2, 3} - 4는 불포함
            int arr4 [] = Arrays.copyOfRange(arr, 0,5); // {0, 1, 2, 3, 4}
        }

    배열 채우기 - fill(), setAll()

    fill()은 배열의 모든 요소를 지정된 값으로 채운다.

     

    setAll()은 배열을 채우는데 사용할 함수형 인터페이스를 매개변수로 받는다.

     

    setAll()을 쓰기 위해선 함수형 인터페이스를 구현한 객채를 매개변수로 지정하거나 람다식을 지정한다.

     

    public static void main(String[] args) {
    
            int arr [] = new int [5];
    
            Arrays.fill(arr, 5); // {5, 5, 5, 5, 5}
            Arrays.setAll(arr, (i) -> (int)(Math.random()*5)+1); // 특정 값을 이용해서 값을 채움
            
        }

    배열의 정렬과 검색 - sort(), binarySearch()

    sort()는 배열을 정렬할 때 사용하면 된다.

     

    binarySearch()는 이진탐색을 위한 메서드로 지정된 값의 인덱스를 반환한다.

     

    이때 주의할 점은 binarySearch()가 제대로 동작하려면 sort()를 이용해서 정렬을 우선적으로 해야한다.

     

    public static void main(String[] args) {
    
            int arr [] = {5,4,3,2,1};
    
            Arrays.sort(arr); // {1, 2, 3, 4, 5}로 정렬
            Arrays.binarySearch(arr, 3); // 인덱스 2 반환, 탐색 전 정렬 필요
    
        }

    배열의 비교와 출력 - equals(), toString()

    배열을 비교할 때는 equals()를 사용한다.

     

    만약 다차원 배열을 비교할 때는 deepEquals()를 쓰면 된다.

     

    배열을 문자열로 편하게 출력하려면 toString()을 사용한다.

     

    만약 다차원 배열을 문자로 출력하려면 deepToString()을 사용한다.

     

    public static void main(String[] args) {
    
            int arr [] = {1,2,3,4,5};
            int arr2 [] = {1,2,3,4,5};
    
            int arr2d [][] = {{1,2,3},{4,5,6}};
            int arr2d2 [][] = {{1,2,3},{4,5,6}};
    
            Arrays.toString(arr); // 출력시 [1,2,3,4,5]
            Arrays.deepToString(arr2d); // 출력시 [[1,2,3], [4,5,6]]
    
            Arrays.equals(arr, arr2); // 출력시 true
            Arrays.deepEquals(arr2d, arr2d2); // 출력시 true
    
        }

    배열을 List로 변환 - asList(Object....a)

    asList()는 배열을 List에 담아서 반환하는 것이다.

     

    이때 반환되는 리스트는 읽기 전용이라 자료를 추가, 삭제할 수 없다.

     

    만약 리스트를 반환하면서 읽기전용이 아닌 온전한 리스트에 넣고 싶다면 생성자에 넣어주면 된다.

     

    public static void main(String[] args) {
    
            int arr [] = {1,2,3,4,5};
    
            // 배열을 리스트로 변환(읽기전용)
            List list = Arrays.asList(new int[] {1,2,3,4,5});
    
            // 배열을 읽기 쓰기 가능한 리스트로 변환
            List list2 = new ArrayList(Arrays.asList(1,2,3,4,5));
    
        }

     

Designed by Tistory.