ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java]STEP1 - 20) Arrays 클래스
    개발 공부/Java 2020. 10. 17. 17:34

     

    본 게시글은 도서 "이것이 자바다" 동영상 강의를 듣고 기록하는 TIL(Today I Learned) 입니다.
    모든 저작권은 출판사 한빛미디어와 신용권님께 있음을 알립니다.👍

     

     

    이번 게시물에서는 자바의 배열 조작 기능을 가지고 있는 Arrays 클래스에 대해 알아보겠습니다.

     

     

    1. Arrays 클래스


    Arrays 클래스는 배열의 복사, 항목 정렬, 항목 검색과 같은 배열 조작 기능을 가지고 있다.

     

    Arrays 클래스가 가지고 있는 메소드는 다음과 같다. 모든 메소드는 정적 메소드이다.

    리턴 타입 메소드(매개변수) 사용
    int binarySearch(배열, 찾는값) 전체 배열 항목에서 찾는 값이 있는 인덱스 리턴
    타겟 배열 copyOf(원본배열, 복사길이) 원본 배열의 0번 인덱스에서 복사할 길이만큼 복사한 배열 리턴
    타겟 배열 copyOfRange(원본배열, 시작인덱스, 끝인덱스) 원본 배열의 시작 인덱스에서 끝 인덱스까지 복사한 배열 리턴
    boolean equals(배열, 배열) 두 배열의 얕은 비교(중첩 배열의 항목은 비교하지 않음)
    boolean deepEquals(배열, 배열) 두 배열의 깊은 비교(중첩 배열의 항목까지 비교)
    void fill(배열, 값) 전체 배열 항목에 동일한 값을 저장
    void fill(배열, 시작인덱스, 끝인덱스, 값) 시작 인덱스부터 끝 인덱스까지의 항목에만 동일한 값을 저장
    void sort(배열) 배열의 전체 항목을 오름차순으로 정렬
    String toString(배열) "[값1 ,값2 ...]"와 같은 문자열 리턴

     

     

    배열 복사는 copyOf()와 copyOfRange() 메소드가 있지만, System.arraycopy 메소드를 이용할 수도 있다.

    System.arraycopy(원본배열, 원본시작인덱스, 타겟배열, 타겟시작인덱스, 복사개수);

     

     

    배열 정렬 때는 기본 타입 또는 String 배열은 Arrays.sort() 메소드의 매개값으로 지정해주면 자동으로 오름차순으로 정렬이 된다. 하지만 사용자 정의 클래스 타입일 경우에는 클래스가 Comparable 인터페이스를 구현하고 있어야 한다.

    public class Member implements Comparable<Member> {
        String name;
        Member(String name) {
            this.name = name;
        }

        @Override
        public int compareTo(Member o) {
            return name.compareTo(o.name);
        }
    }

    기본 타입이나 String 타입을 제외한 사용자 정의 클래스 타입의 경우에는 Comparable 인터페이스를 구현해야 한다.
    따라서 Member라는 사용자 정의 클래스 타입을 정의할 때 Comparable을 implements 한다.

    그 다음으로 compareTo() 메소드를 오버라이딩 해야 한다.
    compareTo() 메소드는 A.compareTo(B) 와 같은 식으로 사용하는데,
    A > B 일 경우 양수를 리턴하고, A = B 일 경우 0을 리턴하고,  A < B 일 경우 음수를 리턴한다.

    Member를 정렬할 때 name을 기준으로 정렬하고자 한다면, compareTo() 메소드의 리턴값을 name을 비교한 결과 값이어야 한다.
    return 에서 사용되는 compareTo() 메소드는 String 객체에 오버라이딩 된 compareTo() 메소드이다.
    따라서 Member 객체 들 간의 name을 compareTo()로 비교한 결과값을 리턴하여 Member 타입을 정렬할 수 있다.

     

     

    배열 항목 검색때는 반드시 Arrays.sort() 메소드를 이용해 오름차순으로 정렬한 후, Arrays.binarySearch() 메소드로 항목을 찾아야 한다. 만약 오름차순으로 정렬하지 않고 항목을 검색하면 예외가 발생한다.

     

     

     

    본 게시글은 여기서 마치겠습니다.

    읽어주셔서 감사하고, 혹시나 틀린 부분이나 보완해야할 부분이 있다면 댓글에 남겨주세요~!

    댓글

Designed by Tistory.