Java

[Java] 배열의 출력, 비교, 복사, 정렬

Joo.v7 2024. 8. 25. 11:49

import java.util.Arrays;

Arrays 클래스는 배열을 조작하는데 유용한 다양한 메소드들을 지원한다.

Arrays.toString(), Arrays.equals(), Arrays.indexOf(), Arrays.indexOfRange(), Arrays.sort(), Arrays.binarySearch(), Arrays.copyOf(), Arrays.copyOfRange(), Arrays.fill()

 

0. 배열의 복제: clone()

  • Java의 배열 인스턴스는 clone() 메소드 하나만을 지원한다.
  • 대신 java.util.Arrays 클래스에서 배열과 관련된 유용한 메소드를 제공한다.
/* clone() 예시 */
int[] row = {1,2,3,4};
int[] row2 = row.clone();

clone() 메소드 사용 후 메모리 구조

 

1. 배열의 출력: Arrays.toString()

  • 배열의 요소들을 문자열의 형태로 변환하여 [요소1, 요소2, ...] 형식으로 return한다.
  • argument로 배열을 입력한다.
  • 사용법: Arrays.toString(arr1)
import java.util.Arrays;

public class test {
    public static void main(String[] args) {
        int[] intArray = {1,2,3,4,5};
        char[] charArray = {'a', 'B', 'c', 'D'};

        System.out.println(Arrays.toString(intArray));
        System.out.println(Arrays.toString(charArray));
    }
}

 

실행 결과

[1, 2, 3, 4, 5]
[a, B, c, D]

 

2. 배열의 비교: Arrays.equals()

  • argument로 받은 두 배열의 길이타입, 인자의 값이 같은지 비교하고 같으면 true, 다르면 false를 return한다.
  • 2차원 배열의 경우 Arrays.deepEquals(arr1, arr2) 을 사용한다.
  • 사용법: Arrays.equals(arr1, arr2)
import java.util.Arrays;

public class test {
    public static void main(String[] args) {
        int[] intArray1 = {1,2,3,4,5};
        int[] intArray2 = {1,2,3,4,5};

        char[] charArray1 = {'a', 'B', 'c', 'D'};
        char[] charArray2 = {'a', 'B', 'c', 'D'};

        System.out.println(Arrays.equals(intArray1, intArray2)); // true
        System.out.println(Arrays.equals(charArray1, charArray2)); // true
    }
}

 

실행결과

true
true

 

3. 배열의 복사: Arrays.copyOf(), Arrays.copyOfRange()

 

Arrays.copyOf()

  • 배열을 원하는 길이만큼 복사(0부터)하여 새로운 배열을 만든다.
  • argument로 원본 배열과 복사할 인자의 개수(copy 배열의 길이)를 입력한다. 요소는 원본 배열의 0번째 index부터 복사된다.
  • 아래 코드의 copy2처럼 지정된 길이가 원본 배열의 길이보다 크다면, 새 배열의 나머지 부분은 해당 타입의 기본값으로 채워집니다.
  • 사용법: int[] copyArray = Arrays.copyOf(originalArray, copyArray 배열 길이);
import java.util.Arrays;

public class test {
    public static void main(String[] args) {
        int[] original = {1, 2, 3, 4, 5};
        int[] copy1 = Arrays.copyOf(original, 3);
        int[] copy2 = Arrays.copyOf(original, 10);

        System.out.println(Arrays.toString(copy1));
        System.out.println(Arrays.toString(copy2));
    }
}

 

실행 결과

[1, 2, 3]
[1, 2, 3, 4, 5, 0, 0, 0, 0, 0]

 

Arrays.copyOfRange()

  • 배열의 특정 범위를 복사하여 새로운 배열을 만든다.
  • argument로 원본 배열, start index, end index를 입력한다. original[start_index] ~ original[end_index - 1]이 복사됨.
  • 아래 코드의 copy2처럼 지정된 길이가 원본 배열의 길이보다 크다면, 새 배열의 나머지 부분은 해당 타입의 기본값으로 채워집니다.
  • 사용법: int[] copyArray = Array.copyOfRange(originalArray, start_index, end_index);
import java.util.Arrays;

public class test {
    public static void main(String[] args) {
        int[] original = {1, 2, 3, 4, 5};
        int[] copy1 = Arrays.copyOfRange(original, 1, 3);
        int[] copy2 = Arrays.copyOfRange(original, 2, 10);

        System.out.println(Arrays.toString(copy1));
        System.out.println(Arrays.toString(copy2));
    }
}

 

실행 결과

[2, 3]
[3, 4, 5, 0, 0, 0, 0, 0]

 

4. 배열의 정렬

 

Arrays.sort()

  • 배열의 요소들을 숫자오름차순으로, 문자열사전순으로 정렬된다.
  • 사용법: Arrays.sort(arr1)
import java.util.Arrays;

public class test {
    public static void main(String[] args) {
        int[] intArray = {1, 2, 3, 4, 5};
        char[] charArray = {'c','d','b','a','e'};
        
        Arrays.sort(intArray);
        Arrays.sort(charArray);
        
        System.out.println(Arrays.toString(intArray));
        System.out.println(Arrays.toString(charArray));
    }
}

 

실행 결과

[1, 2, 3, 4, 5]
[a, b, c, d, e]

 

 

 

Arrays.binarySearch

  • argument로 전달받은 배열에서 특정 객체의 위치를 binary search로 검색 후 index 값을 return.
  • argument로 전달한 배열이 정렬되어 있어야 한다.
int[] array = {1,2,3,4,5,6,7,8,9};
int index = Arrays.binarySearch(array, 7); // 6을 반환

 


 

 

2024.08.25 - [Java] - [Java] 06. 배열

 

[Java] 06. 배열

Chapter 1: 배열 개요Java에서 배열 표기법배열의 차원배열 요소에 접근배열의 경계 검사배열과 컬렉션 비교 Chapter 2: 배열 생성배열 인스턴스 생성배열 요소 초기화다차원 배열 요소 초기화가변

lightningtech.tistory.com

 

출처: https://github.com/gikpreet/class-programming_with_java/tree/master

 

GitHub - gikpreet/class-programming_with_java

Contribute to gikpreet/class-programming_with_java development by creating an account on GitHub.

github.com