swift λ¬Έλ²•πŸ–€

[SWIFT] μ»¬λ ‰μ…˜ ( Array, Set, Dictionary, KeyValuePairs )

eundeang 2023. 7. 12. 02:15
μ»¬λ ‰μ…˜?
μ—¬λŸ¬ 개의 μš”μ†Œλ₯Ό μ €μž₯ν•˜κ³  μ‘°μž‘ν•  수 μžˆλŠ” 자료ꡬ쑰

 

μ»¬λ ‰μ…˜μ€ 데이터λ₯Ό κ·Έλ£Ήν™”ν•˜κ³  효율적인 데이터 μ‘°μž‘μ„ μœ„ν•΄ μ‚¬μš©λœλ‹€.

 

Array

μˆœμ„œκ°€ 'μžˆλŠ”' μš”μ†Œμ˜ μ§‘ν•© (쀑볡 κ°€λŠ₯)

λ™μΌν•œ νƒ€μž…μ˜ λ°μ΄ν„°λ§Œ 담을 수 있음

인덱슀λ₯Ό μ‚¬μš©ν•˜μ—¬ 각 μš”μ†Œμ— μ ‘κ·Όν•  수 μžˆλ‹€.  (μš”μ†Œμ˜ μΆ”κ°€ , μ‚­μ œ , μˆ˜μ • λ“± λ‹€μ–‘ν•œ μž‘μ—…μ„ ν•  수 있음)

 

  • 빈 λ°°μ—΄ 생성 방법 (빈 arrayλ₯Ό 생성할 λ•ŒλŠ” μžλ£Œν˜•μ„ κΌ­ λͺ…μ‹œν•΄μ•Όν•¨)
let emptyArray1: [Int] = []

let emptyArray2 = Array<Int>()

let emptyArray3 = [Int]()

 

  • 데이터λ₯Ό κ°€μ§€κ³  μžˆλŠ” λ°°μ—΄ 생성 방법 (Type Inference κ°€λŠ₯, λ°°μ—΄λ§Œ κ°€λŠ₯함)
var numsArray = [1, 2, 3, 4, 5] 

 

Set

μˆœμ„œκ°€ 'μ—†λŠ”' μœ μΌν•œ μš”μ†Œλ“€μ˜ μ§‘ν•© (쀑볡 λΆˆκ°€) 

λ‹€μ–‘ν•œ μ§‘ν•© μ—°μ‚° μˆ˜ν–‰μ΄ κ°€λŠ₯ν•˜λ‹€. (λ©€λ²„μ‹­ν…ŒμŠ€νŠΈ, ꡐ집합, ν•©μ§‘ν•©, μ°¨μ§‘ν•©λ“± λ‹€μ–‘ν•œ μž‘μ—…μ„ ν•  수 있음)

Hashable함 (μ •λ ¬ μˆœμ„œλ³΄λ‹€ 검색 속도가 μ€‘μš”ν•œ κ²½μš°μ— μ‚¬μš©)

덜 μ‚¬μš©λ˜λŠ” νƒ€μž…μœΌλ‘œ, μœ μΌν•˜λ©΄μ„œ, μ§‘ν•©μ˜ μˆ˜ν•™μ μΈ κ°œλ…μ„ μ΄μš©ν•  ν•„μš”κ°€ μžˆμ„ λ•Œ ν•œμ •μ μœΌλ‘œ μ‚¬μš©λ¨

  • 빈 Set의 생성 (빈 Set을 생성할 λ•ŒλŠ” μžλ£Œν˜•μ„ κΌ­ λͺ…μ‹œν•΄μ•Όν•¨)
let emptySet: Set<Int> = []

let emptySet1 = Set<Int>()
  • 데이터λ₯Ό κ°€μ§€κ³  μžˆλŠ” Set 생성 방법 
// 단좕문법

let set1: Set = [1, 2, 3]

// 정식문법

let set2: Set<Int> = [1, 2, 3]

 

Dictionary

μˆœμ„œκ°€ 'μ—†λŠ”' key - value 쌍으둜 κ΅¬μ„±λœ μš”μ†Œμ˜ μ§‘ν•© (쀑볡 λΆˆκ°€)

각 μš”μ†ŒλŠ” keyλ₯Ό μ‚¬μš©ν•˜μ—¬ 접근이 κ°€λŠ₯ν•˜λ‹€. (keyλ₯Ό 기반으둜 값을 μ €μž₯ν•˜κ³  κ²€μƒ‰ν•˜λŠ”λ° μ‚¬μš©λ¨)

key값은 μœ μΌν•΄μ•Όν•¨, Hashable해야함 (쀑볡 λΆˆκ°€λŠ₯)

1개의 λ”•μ…”λ„ˆλ¦¬μ—λŠ” λ™μΌν•œ μžλ£Œν˜• 쌍의 λ°μ΄ν„°λ§Œ 담을 수 있음

  • 빈 λ”•μ…”λ„ˆλ¦¬μ˜ 생성(빈 Dictionaryλ₯Ό 생성할 λ•ŒλŠ” μžλ£Œν˜•μ„ κΌ­ λͺ…μ‹œν•΄μ•Όν•¨)
let emptyDic1: Dictionary<Int, String> = [:]

let emptyDic2 = Dictionary<Int, String>()

let emptyDic3 = [Int: String]()
  • 데이터가 μžˆλŠ” λ”•μ…”λ„ˆλ¦¬ 생성
let emptyDic1: Dictionary<Int, String> = [:]

let emptyDic2 = Dictionary<Int, String>()

let emptyDic3 = [Int: String]()

 

keyValuePairs

μˆœμ„œκ°€ μžˆλŠ” key- value 쌍의 μ§‘ν•© (쀑볡 κ°€λŠ₯)

λ°°μ—΄κ³Ό μœ μ‚¬ν•œ λ°©μ‹μœΌλ‘œ κ°’ μ €μž₯, 접근이 κ°€λŠ₯ν•˜λ‹€. 

덜 μ‚¬μš©λ˜λŠ” νƒ€μž…μœΌλ‘œ μΌλ°˜μ μœΌλ‘œλŠ” λ°°μ—΄μ΄λ‚˜ λ”•μ…”λ„ˆλ¦¬λ₯Ό μ„ ν˜Έν•¨

λ”•μ…”λ„ˆλ¦¬μ™€ μœ μ‚¬ν•œ λ™μž‘μ„ ν•„μš”ν˜Έ ν•  λ•Œλ‚˜ , μž…λ ₯μˆœμ„œλ₯Ό μ€‘μš”ν•˜κ²Œ λ‹€λ£°λ•Œμ— ν•œμ •μ μœΌλ‘œ μ‚¬μš©ν•¨

검색 μ•Œκ³ λ¦¬μ¦˜μƒ λΉ λ₯΄μ§€ μ•ŠμŒ

 

  • 데이터가 μžˆλŠ” KeyValuePairs의 생성(빈 KeyValuePairsλ₯Ό 생성할 λ•ŒλŠ” μžλ£Œν˜•μ„ κΌ­ λͺ…μ‹œν•΄μ•Όν•¨)
let introduce: KeyValuePairs = ["first": "Hello", "second": "My Name", "third":"is"]
  • 데이터가 μžˆλŠ” KeyValuePairs 생성
let emptypair1 : KeyValuePairs<Int,String> = [:]

let emptypair2 = KeyValuePairs<Int,String>()