Java/Short 개발

[Java/Short] 배열/리스트의 요소를 역순으로 재구성 방법 : forward to reverse

adjh54 2023. 6. 5. 00:59
반응형
해당 글에서는 배열/리스트를 역순으로 재구성하는 방법에 대해서 알아봅니다.





1) 배열의 요소를 역순으로 재구성 방법


 

1. for문 인덱스를 활용한 방법-1


💡 배열을 역순으로 순회하면서 파라미터로 전달받은 값을 새롭게 구성한 값으로 대입하는 방법입니다.

1. 배열의 길이만큼 새로운 배열을 생성합니다.
2. for문을 이용하여 역순으로 배열을 순회합니다. 이를 이용하여 전달받은 값을 새로운 배열에 대입합니다
// 1
public static int[] reverseArray(int[] arr) {
    // 1. 값이 존재하는 배열과 새로 넣으려는 배열을 선언합니다.
    int[] result = new int[arr.length];

    for (int i = 0; i < arr.length; i++) {
        result[i] = arr[arr.length - 1 - i];
    }

    return result;
}

// 2
public static int[] reverseArray(int[] arr) {
    // 1. 값이 존재하는 배열과 새로 넣으려는 배열을 선언합니다.
    int[] result = new int[arr.length];

    // 2. arr를 앞뒤로 뒤집습니다.
    for (int i = arr.length; i > 0; i--) {
        result[arr.length - i] = arr[i - 1];
    }

    return result;
}

 

 

 

2. for문 인덱스를 활용한 방법 -2


💡 배열을 역순으로 순회하면서 i, j 인덱스를 감소 혹은 증감하여 새로운 배열에 대입하는 방법입니다.

1. 배열의 길이만큼 새로운 배열을 생성합니다.
2. 기존의 배열을 끝에서부터 새로운 배열의 시작까지 각각의 인덱스를 대응시켜 값을 복사합니다.
public static int[] reverseArray(int[] arr) {
    int[] result = new int[arr.length];
    for (int i = arr.length - 1, j = 0; i >= 0; i--, j++) {
        result[j] = arr[i];
    }
    return result;
}

 

 

 

 

3.  for문 인덱스를 활용한 방법 -3 : 반복 인덱스를 반만 수행


💡 배열을 순회하는데 반만 순회하여 새로운 값을 대입하는 방법입니다.

1. 배열의 길이를 2로 나눕니다.
2. for문을 이용하여 기존의 길이의 반만큼만 반복하며 앞과 뒤의 값을 서로 교환해 줍니다.
public static int[] reverseArray(int[] arr) {
    for (int i = 0; i < arr.length / 2; i++) {
        int temp = arr[i];
        arr[i] = arr[arr.length - i - 1];
        arr[arr.length - i - 1] = temp;
    }
    return arr;
}

 

 

 

4. 배열을 리스트로 변환 방법


💡 배열을 리스트로 변환하여 리스트 함수를 이용하여 역순 배열 구성 후 다시 배열로 변경하는 방법입니다.

1. 기존 배열을 리스트로 변환합니다.
2. 리스트의 reverse() 함수를 이용하여 역순 배열로 변환합니다.
3. 리스트를 다시 배열로 변환하여 반환합니다.
import java.util.Collections;
import java.util.List;
import java.util.Arrays;

public static int[] reverseArray(int[] arr) {
    List<Integer> list = Arrays.asList(arr);
    Collections.reverse(list);
    return list.toArray(new Integer[arr.length]);
}



 

2) 리스트의 요소를 역순으로 재구성 방법


1. Collections.reverse() 함수 이용


💡 Collections.reverse() 함수 이용

- Collections의 함수인 reverse()를 이용하여서 요소들을 역순으로 재구성합니다.
 /**
 * 리스트를 역순으로 재구성하는 방법
 */
List<Integer> integerList = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);

Collections.reverse(integerList);

// List 역순 :: [9, 8, 7, 6, 5, 4, 3, 2, 1]
System.out.println("List 역순 :: " + integerList);

 

 

 

2. Stream API 이용 


💡 Stream API 이용 

- Stream API의 List.stream().sorted(Collections.reverseOrder()).collect(Collectors.toList())를 이용한 방법입니다.
  /**
 * 리스트를 역순으로 재구성하는 방법
 */
List<Integer> integerList = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);

List<Integer> reversed = integerList.stream()
        .sorted(Collections.reverseOrder())
        .collect(Collectors.toList());

System.out.println("List 역순 :: " + reversed); // List 역순 :: [9, 8, 7, 6, 5, 4, 3, 2, 1]

 

 

 

 

 

 

 

 

오늘도 감사합니다. 😀

 

 

 

반응형