Swift 5 Array
에는 sorted()
and 라는 두 가지 메소드가 sorted(by:)
있습니다. 첫 번째 방법 sorted()
은 다음과 같은 선언입니다.
컬렉션의 요소를 정렬하여 반환합니다.
func sorted() -> [Element]
두 번째 방법 sorted(by:)
은 다음과 같은 선언입니다.
주어진 술어를 요소 간의 비교로 사용하여 정렬 된 콜렉션의 요소를 리턴합니다.
func sorted(by areInIncreasingOrder: (Element, Element) throws -> Bool) rethrows -> [Element]
#1. 비교 가능한 객체에 대해 오름차순으로 정렬
컬렉션 내의 요소 유형이 Comparable
프로토콜을 따르는 경우 sorted()
요소를 오름차순으로 정렬하는 데 사용할 수 있습니다 . 다음 놀이터 코드는 사용 방법을 보여줍니다 sorted()
.
class ImageFile: CustomStringConvertible, Comparable {
let fileName: String
let fileID: Int
var description: String { return "ImageFile with ID: \(fileID)" }
init(fileName: String, fileID: Int) {
self.fileName = fileName
self.fileID = fileID
}
static func ==(lhs: ImageFile, rhs: ImageFile) -> Bool {
return lhs.fileID == rhs.fileID
}
static func <(lhs: ImageFile, rhs: ImageFile) -> Bool {
return lhs.fileID < rhs.fileID
}
}
let images = [
ImageFile(fileName: "Car", fileID: 300),
ImageFile(fileName: "Boat", fileID: 100),
ImageFile(fileName: "Plane", fileID: 200)
]
let sortedImages = images.sorted()
print(sortedImages)
/*
prints: [ImageFile with ID: 100, ImageFile with ID: 200, ImageFile with ID: 300]
*/
# 2. 비슷한 객체에 대해 내림차순으로 정렬
컬렉션 내의 요소 유형이 Comparable
프로토콜을 따르는 경우 sorted(by:)
요소를 내림차순으로 정렬하려면 사용해야 합니다.
class ImageFile: CustomStringConvertible, Comparable {
let fileName: String
let fileID: Int
var description: String { return "ImageFile with ID: \(fileID)" }
init(fileName: String, fileID: Int) {
self.fileName = fileName
self.fileID = fileID
}
static func ==(lhs: ImageFile, rhs: ImageFile) -> Bool {
return lhs.fileID == rhs.fileID
}
static func <(lhs: ImageFile, rhs: ImageFile) -> Bool {
return lhs.fileID < rhs.fileID
}
}
let images = [
ImageFile(fileName: "Car", fileID: 300),
ImageFile(fileName: "Boat", fileID: 100),
ImageFile(fileName: "Plane", fileID: 200)
]
let sortedImages = images.sorted(by: { (img0: ImageFile, img1: ImageFile) -> Bool in
return img0 > img1
})
//let sortedImages = images.sorted(by: >) // also works
//let sortedImages = images.sorted { $0 > $1 } // also works
print(sortedImages)
/*
prints: [ImageFile with ID: 300, ImageFile with ID: 200, ImageFile with ID: 100]
*/
#삼. 비교할 수없는 객체의 오름차순 또는 내림차순으로 정렬
컬렉션 내의 요소 유형이 Comparable
프로토콜을 준수하지 않으면 sorted(by:)
요소를 오름차순 또는 내림차순으로 정렬하기 위해 사용해야 합니다.
class ImageFile: CustomStringConvertible {
let fileName: String
let fileID: Int
var description: String { return "ImageFile with ID: \(fileID)" }
init(fileName: String, fileID: Int) {
self.fileName = fileName
self.fileID = fileID
}
}
let images = [
ImageFile(fileName: "Car", fileID: 300),
ImageFile(fileName: "Boat", fileID: 100),
ImageFile(fileName: "Plane", fileID: 200)
]
let sortedImages = images.sorted(by: { (img0: ImageFile, img1: ImageFile) -> Bool in
return img0.fileID < img1.fileID
})
//let sortedImages = images.sorted { $0.fileID < $1.fileID } // also works
print(sortedImages)
/*
prints: [ImageFile with ID: 300, ImageFile with ID: 200, ImageFile with ID: 100]
*/
스위프트는 또한라는 두 가지 방법을 제공합니다 sort()
과 sort(by:)
의 대응으로 sorted()
하고 sorted(by:)
경우에 당신이 자리에서 컬렉션을 정렬 할 필요가있다.