Potato
์•ˆ๋…•ํ•˜์„ธ์š”, ๊ฐ์žก๋‹ˆ๋‹ค?๐Ÿฅ” ^___^ ๐Ÿ˜บ github ๋ฐ”๋กœ๊ฐ€๊ธฐ ๐Ÿ‘‰๐Ÿป

Swift/Swift BASIC

[Swift] ๊ธฐ์ดˆ ๋ฌธ๋ฒ• - Collection types (Array, Dictionary, Set)

๊ฐ์ž ๐Ÿฅ” 2022. 1. 11. 16:12
๋ฐ˜์‘ํ˜•

 

Collection types

์ปฌ๋ ‰์…˜ ํƒ€์ž…์ด๋ž€ ์Šค์œ„ํ”„ํŠธ์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ฐ์ดํ„ฐ๋“ค์˜ ๋ฌถ์Œ์„ ์˜๋ฏธํ•œ๋‹ค. ์Šค์œ„ํ”„ํŠธ์—์„œ๋Š” ์„ธ๊ฐ€์ง€์˜ ์ฝœ๋ ‰์…˜ ํƒ€์ž…์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, Array, dictionary, Set  ์„ธ๊ฐ€์ง€๋กœ ๋‚˜๋ˆ„์–ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค.


Array (๋ฐฐ์—ด)

๋ฐ์ดํ„ฐ ํƒ€์ž…์˜ ๊ฐ’๋“ค์„ ์ˆœ์„œ๋Œ€๋กœ ์ง€์ •ํ•˜๋Š” ๋ฆฌ์ŠคํŠธ์ด๋‹ค. 

โ–ถ Array ํ˜•์„ฑํ•˜๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•

๊ฐ€์žฅ ์›์ดˆ์ ์ธ? ๋ฐฉ๋ฒ•์€ ์ฒซ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์ด์ง€๋งŒ, ๋ณดํ†ต ์ถ•์•ฝ๋œ ํ˜•ํƒœ์ธ ๋‘, ์„ธ๋ฒˆ์งธ ํ˜•ํƒœ๋กœ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•œ๋‹ค.

// ์ฒซ๋ฒˆ์งธ ๋ฐฉ๋ฒ• : ๋นˆ Int array ํ˜•์„ฑํ•˜๊ธฐ
var numbers: Array<Int> = Array<Int>()

// ๋‘ ๋ฒˆ์งธ ๋ฐฉ๋ฒ• : ๋นˆ String array ํ˜•์„ฑํ•˜๊ธฐ
var names = [String]()

// ์„ธ ๋ฒˆ์งธ ๋ฐฉ๋ฒ• : ๋นˆ String array ํ˜•์„ฑํ•˜๊ธฐ
var names: [String] = []

 

โ–ถ Array ์— ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ํ•˜๊ธฐ (append)

append๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐฐ์—ด์˜ ๋งจ ๋งˆ์ง€๋ง‰์— ๊ฐ’์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

// ๊ฐ’์„ ๋งจ ๋งˆ์ง€๋ง‰์— ์ถ”๊ฐ€ํ•˜๊ธฐ : append
numbers.append(1)
nubmers.append(2)
numbers.append(3)
//prints [1, 2, 3]

 

โ–ถ Array ์ค‘๊ฐ„์ง€์ ์— ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ํ•˜๊ธฐ (insert)

insert ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฐฐ์—ด์˜ ์ค‘๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋„ฃ์œผ๋ ค๋Š” ๊ฐ’์„ ์ ๊ณ , at ๋’ค์— ์œ„์น˜๋ฅผ ์ ์–ด์ฃผ๋ฉด ๋œ๋‹ค.

// ๋ฐฐ์—ด ์ค‘๊ฐ„์— ๊ฐ’ ์‚ฝ์ž…ํ•˜๊ธฐ insert
numbers.insert(4, at: 2) //2๋ฒˆ์ž๋ฆฌ์— 4๋ฅผ ์ถ”๊ฐ€ํ•ด๋ผ
// prints [1, 2, 4, 3]

 

โ–ถ Array์— ์ธ๋ฑ์Šค๋กœ ์ ‘๊ทผํ•˜๊ธฐ

ํŒŒ์ด์ฌ ์–ธ์–ด์™€ ๋™์ผํ•˜๊ฒŒ 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ณ , ์ธ๋ฑ์Šค๋กœ ๋ฐฐ์—ด์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

// ์ ‘๊ทผํ•˜๊ธฐ index
numbers[0] //prints : 1
numbers[2] //prints : 4

 

โ–ถ Array์— ๋ฐ์ดํ„ฐ ์‚ญ์ œํ•˜๊ธฐ (remove)

remove๋กœ ์œ„์น˜๋ฅผ ์ •ํ•˜์—ฌ ์›ํ•˜๋Š” ๊ฐ’์„ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค.

// ์›ํ•˜๋Š” ์œ„์น˜์˜ ๋ฐ์ดํ„ฐ ์‚ญ์ œํ•˜๊ธฐ
numbers.remove(at: 0)
//prints [2,4,3]

Dictionary (๋”•์…”๋„ˆ๋ฆฌ)

์ˆœ์„œ ์—†์ด ํ‚ค(key)์™€ ๊ฐ’(Value) ํ•œ ์Œ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ํƒ€์ž…์ด๋‹ค.

โ–ถ Dictionary ์„ ์–ธํ•˜๊ธฐ

// ๋นˆ ๋”•์…”๋„ˆ๋ฆฌ ์„ ์–ธ (๊บฝ์ƒˆ ์•ˆ์—๋Š” key, value ์ˆœ์„œ๋Œ€๋กœ ์ง€์ •)
var dic: Dictionary<String, Int> = Dictionary<String, Int>()

//์ถ•์•ฝ์˜ ํ˜•ํƒœ (๋ณดํ†ต์ด๋ ‡๊ฒŒ ๋งŽ์ด ์”€)
var dic: [String: Int] = [:]

//๊ฐ’์ด ์žˆ๋Š” ํ˜•ํƒœ์˜ dic์„ ์–ธ
var dic: [String: Int] = ["didu": 1]

 

โ–ถ Dictionary์— ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ํ•˜๊ธฐ

๊ฐ’์„ ๋„ฃ์„ ๋”•์…”๋„ˆ๋ฆฌ์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์— ๋งž๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. ์•ž์„œ ๋งํ–ˆ๋“ฏ์ด, ๋”•์…”๋„ˆ๋ฆฌ๋„ ์ˆœ์„œ๋Š” ์ €์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค.

dic["์ฒ ์ˆ˜"] = 2
dic["์˜ํฌ"] = 5
dic 
// prints ["์ฒ ์ˆ˜":2, "์˜ํฌ":5, "didu":1] 
// ์ˆœ์„œ ์—†์ด ์ €์žฅ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Œ.

 

โ–ถ Dictionary์—์„œ value ๋ณ€๊ฒฝํ•˜๊ธฐ

key์— ํ•ด๋‹นํ•˜๋Š” Value ๊ฐ’์„ ๋ฐ”๊พธ๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

dic["didu"] = 6
dic
//prints ["์ฒ ์ˆ˜":2, "์˜ํฌ":5, "didu":6]

 

โ–ถ Dictionary์—์„œ ๊ฐ’ (value) ์ œ๊ฑฐํ•˜๊ธฐ : removeValue(forKey:_)

dic.removeValue(forKey: "์˜ํฌ")

 

Set (์ง‘ํ•ฉ)

๊ฐ™์€ ๋ฐ์ดํ„ฐ ๊ฐ’์„ ์ˆœ์„œ ์—†์ด ์ €์žฅํ•˜๋Š” ๋ฆฌ์ŠคํŠธ์ด๋‹ค. ๋‹ค๋ฅธ ์–ธ์–ด๋“ค๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ฐฐ์—ด๊ณผ ๋‹ค๋ฅธ์ ์€, ์ค‘๋ณต๋œ ๊ฐ’์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์ด๊ณ , ์ˆœ์„œ๊ฐ€ ์—†๋‹ค๋Š” ์ ์ด๋‹ค! (์œ„์น˜ ์ธ๋ฑ์Šค no)

โ–ถ Set ์„ ์–ธํ•˜๊ธฐ

// Set๋Š” ์ถ•์•ฝํ˜•์ด ์—†๋‹ค. 
var set: Set = Set<Int>()

 

โ–ถ Set์— ๊ฐ’ ์ถ”๊ฐ€ํ•˜๊ธฐ : insert

set.insert(10)
set.insert(20)
set.insert(30)
set.insert(30)
print(set) //prints (30, 20, 10)

๊ฐ’์€ ๋„ฃ์€ ์ˆœ์„œ๋Œ€๋กœ ์ง€์ •๋˜์ง€ ์•Š์œผ๋ฉฐ 30์„ ๋‘๋ฒˆ ๋„ฃ์—ˆ๋Š”๋ฐ ํ•œ๋ฒˆ๋งŒ ์ถœ๋ ฅ๋œ๋‹ค. ์ด์ฒ˜๋Ÿผ set์€ ๋‹ค์‹œํ•œ๋ฒˆ, ๊ฐ•์กฐํ•˜์ง€๋งŒ ์ˆœ์„œ์™€ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

โ–ถ Set์—์„œ ๊ฐ’ ์‚ญ์ œํ•˜๊ธฐ : remove

set๋Š” ์ˆœ์„œ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๊ฐ’์œผ๋กœ ์‚ญ์ œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

set.remove(20)
print(set) //prints (10, 30)

 

๋ฐ˜์‘ํ˜•