본문 바로가기

etc.

[Java] Arrays 클래스와 Arrays 메소드 정리

반응형

java.lang.Object

 java.util.Arrays

 

Arrays 클래스항목 정렬, 항목 검색, 항목 비교와 같은 메소드들을 제공한다

모든 메소드는 static(정적) 메소드이므로, Aarays 클래스로 바로 사용이 가능하다

 


 

배열 복사

 

배열 복사를 위해 단순하게

System.arraycopy(int[] src, int srcPos, int[] dest, int destPos, int length);
// (원본배열, 원본시작인덱스, 타겟배열, 타겟시작인덱스, 복사개수)

메소드를 이용할 수 있다

 

이 이외에도 Arrays 메소드를 사용하여 다음과 같이 복사할 수 있다

char[] arr2 = Arrays.copyOf(arr1, arr1.length);
// arr1 배열 arr1.length 만큼을 arr2로 복사

char[] arr3 = Arrays.copyOfRange(arr1, 1, 3);
// arr1[1] ~ arr1[2] 를 arr3[0] ~ arr3[1] 로 복사
// 1~3에서 끝 인덱스는 포함되지 않는다

 


 

배열 항목 정렬

 

 

Arrays.sort(arr);

기본 타입 또는 String 배열은

위와 같이 arr 배열을 사전순(오름차순)으로 정렬할 수 있다

 

만약 사용자 정의 클래스 타입이라면, Comparable 인터페이스를 구현하고 있어야 한다 (implements)

다음과 같이 Member  클래스를 작성해보자

// Member 타입만 비교하기 위해 제네릭 <> 사용
class Member implements Comparable<Member> {
    String name;
    
    Member(String name)
        this.name = name;
    
    @Override
    int compareTo(Memeber m)
        return name.compareTo(m.name);
        // 내림차순일 때는 *(-1) 를 하여 -1, 0, 1를 구분한다
}

public class Example {
    public static void main(String[] args) {
        Member m1 = new Member("aa");
        Member m2 = new Member("bb");
        Member m3 = new Member("cc");
        Member[] members = {m1, m2, m3};
        Arrays.sort(members);
    }
}

 


 

배열 항목 검색

 

Arrays.sort() 메소드로 정렬을 한 후에,

Arrays.binarySearch() 메소드로 원하는 항목의 인덱스 값을 찾을 수 있다

( 정렬을 하지 않은 후에 binarySearch() 메소드를 사용하거나, 없는 항목을 찾으면 음수값이 리턴된다

나중에 기회가 되면 리턴되는 음수값을 좀 더 알아보자 )

 

// Member[] members = {"aa", "bb", "cc"}; 일 때

Arrays.sort(members);
int idx = Arrays.binarySearch(members, "bb");
// idx == 1

 


 

배열 동일 항목 채우기

 

fill() 메소드로 배열에 동일한 값을 저장할 수 있다

void fill(배열, 값)
void fill(배열, 시작인덱스, 끝인덱스, 값)

 


 

배열 항목 비교

 

equals(배열, 배열) / deepEquals(배열, 배열) 로 얕은 / 깊은 비교를 할 수 있다

이에 관해서는 다음 글에서 다뤄보도록 하자

반응형