안녕하세요!
Kio
입니다 👻
Swift에서컬렉션 타입(Collection Types)
을 정렬할 때
sort()
,sorted()
를 사용 가능하다고 하는데요.
하지만컬렉션 타입(Collection Types)
중에서
세트(set)
,딕셔너리(dictionary)
는 정렬되어 있지 않은 타입이기에
이번 포스팅은배열(array)
에 해당하는 이야기입니다.
오늘은 아래 2가지에 대해 어떤 차이점이 있는 지 알아보고자 합니다.
- sort()
- sorted()
Sorts the collection in place.
sort()
는배열(array)
의 원본을 정렬하는 메서드입니다.
mutating func sort()
공식문서에 따르면 위와 같이 선언되어 있고,
Collection Types
의 요소가Comparable
를 준수할 때 사용 가능합니다.
sort()
의 기본 정렬은 오름차순입니다.
다음과 같은 연산자<
,>
를 통해 정렬 형태를 지정하는 것도 가능합니다.
- sort() - 오름차순
- sort(by: <) - 오름차순
- sort(by: >) - 내림차순
sort()
// 오름차순 정렬
var friends = ["Steven", "Kio", "Ryan", "KangKyung", "James", "Wody"]
friends.sort()
print(friends)
// Prints "["James", "KangKyung", "Kio", "Ryan", "Steven", "Wody"]"
sort(by: <)
// 오름차순 정렬
var friends = ["Steven", "Kio", "Ryan", "KangKyung", "James", "Wody"]
friends.sort(by: <)
print(friends)
// Prints "["James", "KangKyung", "Kio", "Ryan", "Steven", "Wody"]"
sort(by: >)
// 내림차순 정렬
var friends = ["Steven", "Kio", "Ryan", "KangKyung", "James", "Wody"]
friends.sort(by: >)
print(friends)
// Prints "["Wody", "Steven", "Ryan", "Kio", "KangKyung", "James"]"
어떤 차이점인지 보이시나요?
sort()
의 기본정렬이 오름차순이기 때문에sort(by: <)
와 같은 결과가 나옵니다.
sort(by: >)
는 내림차순으로 정렬되는 걸 확인할 수 있네요.
Returns the elements of the sequence, sorted.
정렬된수열(sequence)
의 요소를 반환합니다.
func sorted() -> [Element]
공식문서에 따르면 위와 같이 선언되어 있고,
Collection Types
의 요소가Comparable
를 준수할 때 사용 가능합니다.
sort()
와는 다르게 Reture Value
가 존재합니다.sorted()
는 수열(sequence)
요소의 정렬된 배열입니다.예시를 통해 무슨 말인지 알아볼까요?
sorted()
의 기본 정렬도 오름차순입니다.
다음과 같은 연산자<
,>
를 통해 정렬 형태를 지정하는 것도 가능합니다.
- sorted() - 오름차순
- sorted(by: <) - 오름차순
- sorted(by: >) - 내림차순
sorted()
// 오름차순 정렬
var friends = ["Steven", "Kio", "Ryan", "KangKyung", "James", "Wody"]
let sortedFriends = friends.sorted()
print(sortedFriends)
// Prints "["James", "KangKyung", "Kio", "Ryan", "Steven", "Wody"]"
sorted(by: <)
// 오름차순 정렬
var friends = ["Steven", "Kio", "Ryan", "KangKyung", "James", "Wody"]
let sortedFriends = friends.sorted(by: <)
print(sortedFriends)
// Prints "["James", "KangKyung", "Kio", "Ryan", "Steven", "Wody"]"
sorted(by: >)
// 내림차순 정렬
var friends = ["Steven", "Kio", "Ryan", "KangKyung", "James", "Wody"]
let sortedFriends = friends.sorted(by: >)
print(sortedFriends)
// Prints "["Wody", "Steven", "Ryan", "Kio", "KangKyung", "James"]"
sorted()
는 위의 예시처럼 정렬된 요소를 변수에 할당하여 사용가능합니다.
sorted()
의 기본값이 오름차순이기 때문에 굳이sorted(by: <)
를 사용하지 않아도 상관 없습니다.
그렇다면
sort()
와sorted()
의 차이점은 무엇일까요?
ed의 차이???😱 😱 😱
sort()
는 위에서 설명한 것처럼 원본 배열을 정렬합니다.sorted()
와는 다르게 원본 배열을 정렬하기 때문에 변수에 할당이 불가능합니다.sorted()
는 원본 배열은 건드리지 않고, 정렬한 배열을 사본으로 만들어 사용이 가능합니다.
sort()
와sorted()
에 대해 알아보았습니다.
어떤 메서드가원본을 정렬
하고정렬한 배열의 사본을 생성
하는 지에 대해
차이점을 기억해두면 앞으로 헷갈리지 않으실 겁니다 🥰
- sort()
- sort(by:)
- sorted()
- sorted(by:)
sort() - developer.apple
sort(by:) - developer.apple
sorted() - developer.apple
sorted(by:) - developer.apple
잘못된 정보가 있으면 언제든 코멘트 부탁드립니다 👻