어제 오늘 내일

[Java] 배열 거꾸로 변환하는 2가지 방법 본문

IT/Java

[Java] 배열 거꾸로 변환하는 2가지 방법

hi.anna 2021. 4. 18. 06:20

 

Java 배열의 원소들을 거꾸로(역순으로) 변환하는 방법을 알아보도록 하겠습니다.

 

 

반복문 사용하기

 코드 

import java.util.Arrays;

public class ArrayReverse {
    public static void main(String[] args) {
        // 원본 배열
        int[] arr = { 1, 2, 3, 4, 5 };

        // 거꾸로 배열
        int[] reverseArr = new int[5];

        // 원본배열(arr)의 마지막 인덱스(int i = arr.length - 1)부터 탐색하여
        // 거꾸로 배열(reverseArr)에 순서대로 값을 세팅한다.
        for (int i = arr.length - 1, j = 0; i >= 0; i--, j++) {
            reverseArr[j] = arr[i];
        }

        // 원본 배열과 거꾸로 배열의 값을 출력한다.
        System.out.println("arr : " + Arrays.toString(arr));
        System.out.println("reverseArr : " + Arrays.toString(reverseArr));
    }
}

 결과 

arr : [1, 2, 3, 4, 5]
reverseArr : [5, 4, 3, 2, 1]

반복문을 사용하여 원본 배열(arr)의 원소들을 거꾸로 배열(reverseArr)로 뒤집었습니다.

 

원본 배열의 뒤에서부터 값을 읽어서,

이 값을 순서대로 거꾸로 배열(reverseArr)에 넣어주었습니다.

 

출력 결과를 보면, reverseArr는 원본 배열(arr)의 뒤집어진 형태인 것을 알 수 있습니다.

 

 

 

Collection.reverse()

 코드 

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class ArrayReverse {
    public static void main(String[] args) {
        // 1. 원본 배열
        Integer[] arr = { 1, 2, 3, 4, 5 };

        // 2. 원본 배열을 List로 변환
        List<Integer> list = Arrays.asList(arr);

        // 3. Collections.reverse() 메소드를 사용하여 list를 거꾸로 변환
        Collections.reverse(list);

        // 4. 리스트를 배열로 변환
        Integer[] reverseArr = list.toArray(arr);

        // 5. 결과 출력
        System.out.println("arr : " + Arrays.toString(arr));
        System.out.println("reverseArr : " + Arrays.toString(reverseArr));

    }
}

 결과 

arr : [5, 4, 3, 2, 1]
reverseArr : [5, 4, 3, 2, 1]

이 예제는 조금 복잡합니다.

 

1. Integer[] arr = { 1, 2, 3, 4, 5 };

거꾸로 뒤집을 원본 배열입니다.

 

2. List<Integer> list = Arrays.asList(arr);

원본 배열을 Arrays.asList() 함수의 파라미터로 전달하여

List 형태로 변경하였습니다.

 

3. Collections.reverse(list);

list를 Collections.reverse() 함수의 파라미터로 전달하여,

list를 거꾸로 변환하였습니다.

 

4. list.toArray(arr);

list를 다시 배열 형태로 변환하였습니다.

 

5. 출력

원본 배열인 arr와 

거꾸로 변환된 배열 list를 출력하였습니다.

그런데, 원본 배열인 arr의 값도 거꾸로 변환된 것을 볼 수 있습니다.

이것은, 2번 스텝에서 

Arrays.asList(arr)를 호출하여 새로운 list를 만들때,

완전히 새로운 list를 만드는 것이 아니라,

list가 arr의 주소를 참조하기 때문입니다.

따라서 list에 어떤 변화를 주면, arr도 같이 변하는 것입니다.

 


 

Java의 배열을 거꾸로 뒤집는 방법을 알아보았습니다.

반응형
Comments