일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- Kotlin
- 자료구조
- Kafka
- Spring
- 네트워크
- 낙관적 락
- DB
- Dirty Checking
- 자바
- ocp
- 데이터베이스
- JPA
- Redis
- 정규화
- 페이지네이션
- 3-way handshaking
- MSA
- 삽입 이상
- 삭제 이상
- 비관적 락
- gatway
- null
- 갱신 이상
- well-know port
- AWS
- buildSrc
- java
- HTTP
- 스레드 풀
- 캐시 오염
Archives
- Today
- Total
어 나 갱수.
[Kotlin] 리스트 정렬(sort, sortBy, sortWith) 😙 본문
728x90
오늘은 Kotlin을 사용하게 된다면 많이 사용하게 되는 리스트 정렬 관련된 함수들을 알아보겠습니다.
Immutable 리스트 정렬
sorted() 함수는 데이터 변경이 되지 않는 리스트(Immutable)를 정렬할 때 사용합니다. sorted() 함수는 기존 리스트의 원본을 변경하지 않고 정렬된 리스트를 생성하여 리턴합니다.
val list = listOf(20, 100, 5, 60, 40)
val sortedList = list.sorted()
println("List : $list")
println("SortedList : $sortedList")
결과
List : [20, 100, 5, 60, 40]
SortedList : [5, 20, 40, 60, 100]
원본은 list는 그대로 반환하고 sortedList라는 새로운 리스트를 생성하였습니다.
Mutable 리스트 정렬
sort() 함수는 데이터가 변경 가능한 리스트(Mutable)를 정렬할때 사용합니다. sort() 함수는 기존 리스트의 원본을 변경합니다.
val mutableList = mutableListOf(20, 100, 5, 60, 40)
mutableList.sort()
println("MutableList : $mutableList")
결과
MutableList : [5, 20, 40, 60, 100]
역순으로 정렬(오름차순, 내림차순)
정렬하려는 리스트가 Immutable이냐, Mutable이냐에 따라 역순으로 정렬하는 메서드가 다릅니다.
- reversed() : Immutable 리스트에 사용합니다. 기존 리스트의 원소를 바꾸는 것이 아니라 바꾼 리스트를 반환합니다.
- reverse() : Mutable 리스트에 사용합니다. 기존 리스트의 원소를 바꿉니다.
sortedWith(), sortWith()
sortedWith()는 정렬 규칙으로 Comparator를 지정할 수 있습니다. Comparator를 변경해 자신이 원하는 조건으로 리스트를 정렬하는 것입니다.
- sortedWith() : Immutable List에 사용 -> sorted()와 마찬가지로 새로운 리스트를 반환합니다.
- sortWith() : Mutable List에 사용 -> sort()와 마찬가지로 자기 자신을 정렬합니다.
sortedBy(), sortBy()
sortedBy()는 리스트 요소가 1개의 데이터 타입으로 이루어지지 않고, 내부에 여러 객체를 갖고 있는 타입일 때, 어떤 객체를 비교해서 정렬할지 결정할 때 사용합니다.
- sortedBy() : Immutable List에 사용 -> sorted()와 마찬가지로 새로운 리스트를 반환합니다.
- sortBy() : Mutable List에 사용 -> sort()와 마찬가지로 자기 자신을 정렬합니다.
정리
- sorted()와 같이 "~~ed"로 끝나는 정렬 메서드는 기존 리스트와 별개로 새로운 리스트를 만들어서 반환합니다.
- sort()와 같이 "~~ed"로 끝나지 않은 정렬 메서드는 자기 자신을 정렬합니다.
728x90
'Java' 카테고리의 다른 글
[Java] 추상클래스 VS 인터페이스 🤨 (0) | 2024.02.08 |
---|---|
[Java] Call by value, Call by reference 차이 🤚 (0) | 2024.01.31 |
[Java] JVM 이란 ? 🤠 (0) | 2024.01.07 |
[OOP] 객체지향 프로그래밍의 설계원칙 SOLID 에 대해 알아보자 !! 🤚 (2) | 2023.12.04 |
[Kotlin] ?(물음표)와 !!(느낌표 두개)의 사용 👃🏾 (0) | 2023.09.17 |