Skill Sets/Swift

[Swift] Sort, Sorted 메소드 (Dictionary 정렬 포함)

코코자장자장 2022. 1. 7. 15:57

안녕하세요! 오늘은 Swift에서 제공해주는 Sort와 Sorted에 대해서 알아보려고 합니다!

우선 두 메서드는 원소가 Comparable 프로토콜을 만족해야합니다! 그래야 비교가 가능해 정렬할 수 있으니까요! ㅎㅎ

 

 

1. Sort와 Sorted 차이점

sort() 메서드는 해당 객체를 sort해주는 것입니다!

//sort Example
var intArray = [3, 1, 2, 5, 4]
intArray.sort()
print(intArray) //[1, 2, 3, 4, 5]

 

반면, sorted() 메서드는 sort된 객체를 반환해주는 것입니다.

//sorted Example
var intArray = [3, 1, 2, 5, 4]
let sortedIntArray = intArray.sorted()
print(intArray)       //[3, 1, 2, 5, 4]
print(sortedIntArray) //[1, 2, 3, 4, 5]

 

2. Sort 메소드 사용방법

sort, sorted 메소드 정의입니다.

func sort(by: (Element, Element) -> Bool)
func sorted(by: (Element, Element) -> Bool) -> [Element]
 
파라메터를 비워두면 자동으로 오름차순으로 정렬되지만 custom 해서 사용할 수 있습니다.
 
5가지 모두 오름차순으로 정렬하는 같은 방법입니다.
var intArray = [3, 1, 2, 5, 4]
intArray.sort()
print(intArray) //[1, 2, 3, 4, 5]
// 내림차순
intArray.sort(by: {(element1:Int, element2:Int) -> Bool in return element1 > element2})
intArray.sort(by: {(element1:Int, element2:Int) -> Bool in element1 > element2})
intArray.sort(by: {$0 > $1})
intArray.sort{$0 > $1}
intArray.sort(by: >)
print(intArray) //[5, 4, 3, 2, 1]

 

이를 응용하여 dictionary도 정렬이 가능합니다!

Key값을 이용한 정렬

var dictionary:[Int:Int] = [Int:Int]()
dictionary[1] = 2
dictionary[2] = 5
dictionary[3] = 1
dictionary[4] = -1
dictionary[5] = 10
//let answer = dictionary.sorted{$0.key > $1.key}
let answer = dictionary.sorted{$0.0 > $1.0}


//[(key: 5, value: 10), (key: 4, value: -1), (key: 3, value: 1), (key: 2, value: 5), (key: 1, value: 2)]
print(answer)

 

Value값을 이용한 정렬

var dictionary:[Int:Int] = [Int:Int]()
dictionary[1] = 2
dictionary[2] = 5
dictionary[3] = 1
dictionary[4] = -1
dictionary[5] = 10
// let answer = dictionary.sorted{$0.value > $1.value}
let answer = dictionary.sorted{$0.1 > $1.1}

//[(key: 5, value: 10), (key: 4, value: -1), (key: 3, value: 1), (key: 2, value: 5), (key: 1, value: 2)]
print(answer)

 

이상으로 sort와 sorted에 대해서 알아보았습니다.

 

질문이 있으시면 댓글로 남겨주세요!

 

좋은 하루 되세요!