contains(_:)
Array๋ Set ๋ฑ์ Collection์์ ๋ด๊ฐ ์ํ๋ element๋ฅผ ์ฐพ๊ณ ์ ํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
์ค์ํํธ์์ ์ด๋ ์ฌ์ฉํ๋ ํจ์๊ฐ contains(_:) ํจ์์ด๋ค.
Array์์์ contains(_:)
ย contains(Element) โ Bool
func contains(_ element: Element) -> Bool
// Available when Element conforms to Equatable.
// Equatable : ์๋ก ๋น๊ตํ ์ ์๋ค๋ฉด ๋ค ๋๋ค๋ ๋ป
Swift
๋ณต์ฌ
์์ ๊ฐ์ด ์ฌ์ฉํ๊ฒ ๋๋ฉด, Array Sequence์ ์ฐพ๊ณ ์ ํ๋ element๊ฐ ์๋์ง ํ์ธํ๊ณ , Boolean ๊ฐ์ ๋ฆฌํดํด์ค๋ค๊ณ ํ๋ค.
let arrayInt: [Int] = [1, 2, 3, 4, 5]
let target: Int = 3
arrayInt.contains(target) ? print("\(target) ์์!") : print("\(target) ์์!")
// 3 ์์!
Swift
๋ณต์ฌ
Intํ ๋ฟ๋ง ์๋๋ผ ๋ค๋ฅธ ํ์
๋ค๋ ๊ฐ๋ฅํ๋ค.
let arrayDouble: [Double] = [1.0, 2.0, 3.0, 4.0]
let target: Double = 3.0
if !arrayDouble.contains(target) {
print("\(target)์์!")
} else {
print("\(target)์์!")
}
// 3.0์์!
Swift
๋ณต์ฌ
ย contains(where: (Element) โ Bool) โ Bool
func contains(where predicate: (Element) throws -> Bool) rethrows -> Bool
Swift
๋ณต์ฌ
์ฃผ์ด์ง predicate๋ฅผ Element๊ฐ ๋ง์กฑํ๋์ง ํ๋ณํด์ Bool ํ์
์ ๊ฐ์ผ๋ก ๋ฆฌํดํด์ค๋ค
โข
ํด๋ก์ ๋ฅผ ์ด์ฉํด์ ์กฐ๊ฑด์ ํ์ฑํด ์ค ์ ์์์ ์๋ฏธํ๋ค.
let arrayInt: [Int] = [1, 2, 3, 4, 5]
let hadEvenNum = arrayInt.contains { element -> Bool in
if element % 2 == 0 {
print("true")
return true
}
else {
print("false")
return false
}
}
print(hadEvenNum) // 'hadEvenNum' == true
Swift
๋ณต์ฌ
์์ ๊ฐ์ด, Sequence์์ ๋ฃจํ๋ฌธ์ ํตํด ๊ฐ ์์์ ์ ๊ทผํด ํํ ํด๋ก์ ์ ์ฃผ์ด์ง ์กฐ๊ฑด์ด ๋ง์กฑํ๋ ๊ฒฝ์ฐ์ ๋ฉ์๋๊ฐ ๊ฒฐ๊ณผ ๊ฐ์ ๋ฐํํ๊ณ ์ข
๋ฃ๋๋ค.
์ด๋, contains ๋ฉ์๋ O(n)์ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ค.
์ถ๊ฐ๋ก ํด๋ก์ ๋ฅผ ์ฌ์ฉํ๋ ๋น์ฐํ ์ธ์ ๊ฐ์ ์ถ์ฝํด์ ์ฌ์ฉํ ์๋ ์๋ค.
let nums = [1, 2, 3, 4, 5]
let hadOddNum = nums.contains { $0 % 2 == 1 }
// 'hadOddNum' == true
Swift
๋ณต์ฌ
Set์์์ contains(_:)
func contains(_ member: Element) -> Bool
Swift
๋ณต์ฌ
โ ๋ณต์ก๋๋ O(1)
Set
@frozen struct Set<Element> where Element: Hashable
Swift
๋ณต์ฌ
Set์ด Hashable ํ๋กํ ์ฝ์ ๋ฐ๋ฅด๊ธฐ ๋๋ฌธ์ด๋ค.
Hash๋ hash function์ ํตํด key & value ์์ ์ด๋ฃจ์ด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ
Hash๋ฅผ ๊ตฌํํ ๋, Hash Collision(ํด์ ์ถฉ๋)์ ๋ฐฉ์งํ๊ธฐ ์ํ Chaining์ด ์ผ์ด๋๊ณ , ์ต์
์ ๊ฒฝ์ฐ Hash์ LinkedList๋ฅผ ์ฐจ๋ก๋ก ์ดํด๋ณด์์ผ ํ๋ค๋ฉด, O(n)์ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๊ฒ ๋๊ฒ ์ง๋ง, ํ๊ท ์ ์ผ๋ก ์ฝ์
, ์ญ์ , ๊ฒ์์ ํ๋๋ฐ O(1) ์ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๊ฒ ๋๋ค.
๋ฐ๋ผ์ Swift์์ ์ ๊ณตํ๋ Set ๋ํ Hashable ํ๋กํ ์ฝ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์, Search์ ๊ธฐ๋ฅ์ ์ํํ๋ contains(_:) ๋ฅผ ์ฌ์ฉํ๋ฉด ํ๊ท ์ ์ผ๋ก O(1) ์ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ค.
String์์์ contains(_:)
var string = "Swift is awesome!"
let target = "some"
if string.contains(target) {
print("\(target) ์์!")
}
Swift
๋ณต์ฌ