반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
Tags
- 테이블
- Visual Studio Code
- 자바
- CMD
- CSS
- input
- html
- list
- date
- Array
- table
- 이클립스
- 배열
- 이탈리아
- js
- 정규식
- Java
- javascript
- 자바스크립트
- ArrayList
- string
- windows
- vscode
- Eclipse
- Maven
- IntelliJ
- Button
- json
- 문자열
- 인텔리제이
Archives
- Today
- Total
어제 오늘 내일
[Java] Collections.rotate() – 리스트를 간단히 회전시키는 방법 본문
리스트를 다루다 보면 특정한 규칙에 따라 요소들을 한 칸씩 밀거나 회전시켜야 할 때가 있습니다.
예를 들어, 슬라이드 쇼, 라운드 로빈 방식의 게임 순번 관리, 원형 큐 등을 구현할 때 유용하지요.
이때 Collections.rotate()
메서드를 사용하면 간단히 해결할 수 있습니다.
이 메서드는 리스트 안의 요소들을 원형으로 회전시키는 기능을 제공합니다. 큐, 캐러셀, 라운드 로빈 같은 구조를 구현할 때 유용합니다.
1. 기본 사용법
import java.util.*;
public class RotateExample1 {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
Collections.rotate(list, 2);
System.out.println(list); // [4, 5, 1, 2, 3]
}
}
👉 distance
값을 2
로 주었기 때문에 리스트가 오른쪽으로 2칸 이동했습니다.
즉, 맨 끝에 있던 4
, 5
가 앞으로 돌아옵니다.
2. 음수 distance 값
음수를 주면 왼쪽으로 회전합니다.
import java.util.*;
public class RotateExample2 {
public static void main(String[] args) {
List<String> list = new ArrayList<>(Arrays.asList("A", "B", "C", "D"));
Collections.rotate(list, -1);
System.out.println(list); // [B, C, D, A]
}
}
👉 -1
은 왼쪽으로 한 칸 이동, 맨 앞에 있던 "A"
가 맨 뒤로 이동했습니다.
3. distance가 리스트 크기보다 큰 경우
distance
는 리스트 크기로 나머지 연산이 적용됩니다.
List<Integer> nums = new ArrayList<>(Arrays.asList(10, 20, 30, 40));
Collections.rotate(nums, 6);
System.out.println(nums); // [30, 40, 10, 20]
👉 리스트 크기(4)보다 큰 6
을 넣어도, 실제로는 6 % 4 = 2
만큼 이동한 효과가 납니다.
4. 활용 예시
- 라운드 로빈 방식: 사용자나 플레이어의 순서를 돌아가며 관리
- 슬라이드 쇼/배너 광고: 리스트에서 현재 위치를 기준으로 화면에 표시할 때
- 원형 큐 구현:
rotate()
로 큐처럼 동작하게 만들 수 있음
public class RoundRobinExample {
public static void main(String[] args) {
List<String> players = new ArrayList<>(Arrays.asList("Alice", "Bob", "Charlie"));
for (int i = 0; i < 6; i++) {
System.out.println("현재 차례: " + players.get(0));
Collections.rotate(players, -1); // 한 칸씩 왼쪽 이동
}
}
}
출력 결과:
현재 차례: Alice
현재 차례: Bob
현재 차례: Charlie
현재 차례: Alice
현재 차례: Bob
현재 차례: Charlie
5. 정리
Collections.rotate(List<?> list, int distance)
→ 리스트의 요소를 distance만큼 원형 회전- 양수 → 오른쪽, 음수 → 왼쪽
distance
가 리스트 크기보다 커도 자동으로 나머지만큼 이동
👉 리스트를 손쉽게 회전시키고 싶다면 Collections.rotate()
를 활용하자!
반응형
'IT > Java' 카테고리의 다른 글
[Java] Collections.nCopies() – 같은 값으로 채워진 불변 리스트 만들기 (0) | 2025.09.12 |
---|---|
[Java] Collections.fill() – 리스트를 한 값으로 채우기 (0) | 2025.09.11 |
[Java] Collections.disjoint() – 두 컬렉션이 겹치지 않는지 확인하기 (0) | 2025.09.10 |
[Java] Collections.synchronizedCollection()으로 아무 컬렉션이나 스레드 안전하게 (0) | 2025.09.10 |
[Java] Collections.synchronizedSet()으로 스레드 안전한 집합 만들기 (0) | 2025.09.09 |
Comments