데브허브 | DEVHUB | 코틀린 기초 문법 - 17일차 / reverse코틀린 기초 문법 - 17일차 / reverse
- 코틀린에서 리스트를 뒤집는 방법은
reverse, reversed, asReversed 세 가지가 있습니다. 🔄
- 불변(Immutable) 리스트(
List<T>)의 경우, reversed()와 asReversed()는 모두 원본을 변경하지 않고 뒤집힌 새 리스트를 반환하며 기능상 큰 차이가 없습니다. 💡
- 가변(Mutable) 리스트(
MutableList<T>)의 경우, 각 함수의 동작 방식에 중요한 차이가 있습니다.
reverse()는 원본 MutableList의 순서를 그 자리에서 직접 뒤집고, 반환 값은 없습니다. (in-place 변경) 💥
asReversed()는 원본 MutableList의 *뒤집힌 뷰(view)*를 반환합니다. 이는 원본과 실시간으로 연결되어 있어, 원본 리스트에 변경(예: 요소 추가)이 발생하면 asReversed()로 얻은 뷰에도 즉시 반영됩니다. 🔗
reversed()는 원본 MutableList의 요소를 뒤집어 새로운 불변(immutable) 리스트를 생성합니다. 이 리스트는 원본과 완전히 독립적이므로, 원본 MutableList의 이후 변경 사항이 reversed() 결과에는 영향을 미치지 않습니다. 🛡️
- 따라서, 원본
MutableList를 직접 변경하려면 reverse(), 원본과 연동되는 뒤집힌 뷰가 필요하면 asReversed(), 원본에 영향을 주지 않는 독립적인 뒤집힌 사본이 필요하면 reversed()를 선택해야 합니다. 🎯