2016-11-13 10 views

답변

10

당신은 순서 상관하지 않는 경우 :

사용이 확장, 중복을 제거 할 수 있습니다 : 당신이 주문을 걱정하는 경우

let set: Set = ["a", "s", "d", "s", "f", "g" , "g", "h", "e"] 
print(set) // ["a", "s", "f", "g", "e", "d", "h"] 

:

간단히 세트를 사용 순서를 유지하면서 AnySequence의 요소 :

extension Sequence where Iterator.Element: Hashable { 
    func unique() -> [Iterator.Element] { 
     var alreadyAdded = Set<Iterator.Element>() 
     return self.filter { alreadyAdded.insert($0).inserted } 
    } 
} 

let array = ["a", "s", "d", "s", "f", "g" , "g", "h", "e"] 
let result = array.unique() 
print(result) // ["a", "s", "d", "f", "g", "h", "e"] 
+0

Array에 형식을 이미 변경 한 경우 속도가 빨라질 것이라고 생각합니다. – masakih

+0

@masakih 당신이 그것을 의심하게 만드는 이유는 무엇입니까? 배열은 일반적인 경우 O (n) 루프 업을 갖는 반면, 집합은'O (1)'찾기 (빠른'contains (_ :)'호출에 필요함)를 가지고 있습니다. – Alexander

+0

죄송합니다! 나는'insert (_ :)'에만 초점을 맞추고 있었다. 하지만 나는'contains (_ :)'를 간과했다. – masakih