์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ํ๋์ ๊ทธ๋ฃน์ผ๋ก ๋ค๋ฃจ๊ธฐ ์ํ ๋๊ตฌ ๋ชจ์
์์๊ฐ ์ค์ํ๊ฑฐ๋ ๋์ผํ ์์๋ฅผ ์ฌ๋ฌ ๋ฒ ์ ์ฅํด์ผ ํ ๋ ์ฌ์ฉ
ex) ์ผํ ๋ชฉ๋ก์ด๋ ์์
๋ชฉ๋ก ๊ฐ์ ๊ฒฝ์ฐ
val shoppingList = mutableListOf("Milk", "Eggs", "Flour", "Eggs")
println(shoppingList)
>>["Milk", "Eggs", "Flour", "Eggs"]
์ฃผ๋ก ์ด๋ค ์ปฌ๋ ์
์์ ์ค๋ณต์ ์ ๊ฑฐํ๊ณ ์ ํ ๋, ๋๋ ์ด๋ค ํญ๋ชฉ์ ์กด์ฌ ์ ๋ฌด๋ง ์ค์ํ ๋
ex) ์ด๋ค ํ์ฌ์ ์ฐธ์ํ๋ ์ฌ๋๋ค์ ์ด๋ฆ ๋ชฉ๋ก์์ ์ค๋ณต์ ์ ๊ฑฐํ๊ณ ์ถ์ ๋
val attendees = setOf("Alice", "Bob", "Charlie", "Dave", "Alice", "Bob")
println(attendees)
>>["Alice", "Bob", "Charlie", "Dave"]
๋ฐ์ดํฐ๊ฐ ํค-๊ฐ ์(key-value pairs)์ ํํ๋ก ์กด์ฌํ๊ณ , ํค๋ฅผ ํตํด ๋น ๋ฅด๊ฒ ๊ฐ์ ๊ฒ์ํ๊ณ ๊ด๋ฆฌํด์ผ ํ ๋
fun main() {
// ์ผํ ๋ฆฌ์คํธ ์์ฑ
val shoppingList = listOf("Milk", "Eggs", "Bread")
// ์ผํ ๋ฆฌ์คํธ ์ถ๋ ฅ
println("Shopping List: $shoppingList")
// ๋ฆฌ์คํธ์์ ํน์ ์์ดํ
์ฐพ๊ธฐ
if ("Eggs" in shoppingList) {
println("Don't forget to buy Eggs!")
}
}
List์์ in ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ์ค ์ for๋ฌธ์ ํ๋ฒ ๋๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ ํ ์๊ฐ์ธ O(n)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ค.
๊ทธ๋์ ์๋ชป ์ฌ์ฉํ๋ฉด TimeOut์ด ๋ฐ์ํ ์ ์๋ค.
๋์ Set์ผ๋ก ๋ฐ๊พธ๊ณ in์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ฉด ์๊ฐ์ด ์ค์ด๋ ๋ค.
์๋๋ 1๋ถํฐ 10000000๊น์ง์ ๋ฒ์๋ฅผ ๊ฐ์ง๋ ๋ฆฌ์คํธ์ธ list ๋ณ์์์ in ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด 10000000์ ์ฐพ์ ๋ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ๊ตฌํ๋ ์ฝ๋์ด๋ค.
fun list(){
val list = (1..10000000).toList()
val startTime = System.nanoTime()
val existList = 10000000 in list
val endTime = System.nanoTime()
val duration = (endTime - startTime)
println("List Execution time: $duration ms")
}
>> List Execution time: 20196400 ms
Set์ ์๊ฐ๋ณต์ก๋๋ O(1)์ด๋ค.
Set์ ํด์ ํจ์์ ํด์ ํ
์ด๋ธ์ ์ด์ฉํด์ ๋ง๋ ์๋ฃ๊ตฌ์กฐ์ด๋ฏ๋ก ํด์ ํจ์ ์ฐ์ฐ ์๊ฐ๋งํผ ๊ฑธ๋ฆฌ๋ฏ๋ก, ๋ฐ์ดํฐ๊ฐ ์ปค์ง๋๋ผ๋ ์ผ์ ํ ์๋๊ฐ ๋ณด์ฅ๋๋ค.
์๋๋ Set์ ์ฌ์ฉํ ์ฝ๋์ด๋ค.
fun set(){
val set = (1..10000000).toSet()
val startTime = System.nanoTime()
val existSet = 10000000 in set
val endTime = System.nanoTime()
val duration = (endTime - startTime)
println("Set Execution time: $duration ms")
}
>> Set Execution time: 29500 ms
Set์ ์ฌ์ฉํ๋ฉด ์๊ฐ์ด ์ ๊ฒ ๊ฑธ๋ฆฌ๋ ๊ฑธ ํ์ธํ ์ ์๋ค.
๊ทธ๋์ ๋ฌด์ธ๊ฐ ๊ฐ์ด ์๋์ง ํ์ธํ๋ ค๋ฉด set() ์ผ๋ก ๋ณ๊ฒฝํ๋ค์ in ์ฐ์ฐ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
List์์ in ์ฐ์ฐ์ O(n)์ผ๋ก ์ ํ์๊ฐ์ผ๋ก ํ์ํ๋ค.
๋ฐ๋ฉด์ set์ด๋ dict๋ O(1)๋ก ์์์๊ฐ์ผ๋ก ํ์ํ๋ค.
๋ฐ๋ผ์ ๋ง์ ์์ ๋ฐ์ดํฐ์์ in์ผ๋ก ๊ฐ์ ๊ฒ์ํ๊ณ ์ ํ ๋๋ set์ผ๋ก ๋ณํํ๋ฉด ๋ ๋น ๋ฅด๋ค.