๐Ÿ”ฅTIL๐Ÿ”ฅ๊ธฐ์ˆ ๋ฉด์ ‘์งˆ๋ฌธ | List VS Set

hyihyiยท2024๋…„ 4์›” 9์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
65/70
post-thumbnail

๐Ÿ“– Collection

์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์˜ ๊ทธ๋ฃน์œผ๋กœ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•œ ๋„๊ตฌ ๋ชจ์Œ

Collection ์ฃผ์š” ์ธํ„ฐํŽ˜์ด์Šค

List : ์ˆœ์„œ๊ฐ€ ์žˆ์œผ๋ฉฐ ๋ฐ์ดํ„ฐ ์ค‘๋ณต ํ—ˆ์šฉ O

Set : ์ˆœ์„œ๊ฐ€ ์—†์œผ๋ฉฐ ๋ฐ์ดํ„ฐ ์ค‘๋ณต ํ—ˆ์šฉ X

Map : Map & Value ๊ตฌ์กฐ, Key๋Š” ์ค‘๋ณต ํ—ˆ์šฉ X, Value๋Š” ์ค‘๋ณต ํ—ˆ์šฉ O


๐Ÿ“ List

  • ์ž…๋ ฅ ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜๋ฉฐ ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต ํ—ˆ์šฉ
  • ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผ ๊ฐ€๋Šฅ

List ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ฃผ์š” ๊ตฌํ˜„์ฒด

  • ArrayList : ๋‹จ๋ฐฉํ–ฅ ํฌ์ธํ„ฐ ๊ตฌ์กฐ. ์กฐํšŒ๊ฐ€ ๋น ๋ฆ„
  • LinkedList : ์–‘๋ฐฉํ–ฅ ํฌ์ธํ„ฐ ๊ตฌ์กฐ. ์‚ฝ์ž…, ์‚ญ์ œ๊ฐ€ ๋น ๋ฆ„

๐Ÿค” ์‚ฌ์šฉ ์˜ˆ

์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•˜๊ฑฐ๋‚˜ ๋™์ผํ•œ ์š”์†Œ๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ์ €์žฅํ•ด์•ผ ํ•  ๋•Œ ์‚ฌ์šฉ
ex) ์‡ผํ•‘ ๋ชฉ๋ก์ด๋‚˜ ์ž‘์—… ๋ชฉ๋ก ๊ฐ™์€ ๊ฒฝ์šฐ

val shoppingList = mutableListOf("Milk", "Eggs", "Flour", "Eggs")
println(shoppingList) 
>>["Milk", "Eggs", "Flour", "Eggs"]

๐Ÿ“ Set

  • ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๊ณ  ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜์ง€ ์•Š์Œ
  • ์ธ๋ฑ์Šค๊ฐ€ ๋”ฐ๋กœ ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— Iterator๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์กฐํšŒ

๐Ÿค” ์‚ฌ์šฉ ์˜ˆ

์ฃผ๋กœ ์–ด๋–ค ์ปฌ๋ ‰์…˜์—์„œ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๊ณ ์ž ํ•  ๋•Œ, ๋˜๋Š” ์–ด๋–ค ํ•ญ๋ชฉ์˜ ์กด์žฌ ์œ ๋ฌด๋งŒ ์ค‘์š”ํ•  ๋•Œ
ex) ์–ด๋–ค ํ–‰์‚ฌ์— ์ฐธ์„ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์˜ ์ด๋ฆ„ ๋ชฉ๋ก์—์„œ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๊ณ  ์‹ถ์„ ๋•Œ

val attendees = setOf("Alice", "Bob", "Charlie", "Dave", "Alice", "Bob")
println(attendees) 
>>["Alice", "Bob", "Charlie", "Dave"]

๐Ÿ“ Map

  • Key & Value ๊ตฌ์กฐ
  • Key๋Š” ์ˆœ์„œ๊ฐ€ ์—†์œผ๋ฉฐ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Œ. Value๋Š” ์ค‘๋ณต์„ ํ—ˆ์šฉ.
  • ์ธ๋ฑ์Šค๊ฐ€ ๋”ฐ๋กœ ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— Iterator๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์กฐํšŒ

๐Ÿค” ์‚ฌ์šฉ ์˜ˆ

๋ฐ์ดํ„ฐ๊ฐ€ ํ‚ค-๊ฐ’ ์Œ(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์™€ Set ๋น„๊ต

List

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

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์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋ฉด ๋” ๋น ๋ฅด๋‹ค.

profile
๋‚ด๊ฐ€ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ์“ฐ๋Š” ๋ธ”๋กœ๊ทธ

0๊ฐœ์˜ ๋Œ“๊ธ€