๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์–ธ์–ด/C#. JAVA

[C#] ์ปฌ๋ ‰์…˜ / ์ผ๋ฐ˜ํ™” ์ปฌ๋ ‰์…˜ (Collection / Generic Collection)

by lee365 2021. 4. 6.
๋ฐ˜์‘ํ˜•

๐Ÿงต ์ปฌ๋ ‰์…˜๊ณผ ์ผ๋ฐ˜ํ™” ์ปฌ๋ ‰์…˜

    โžฐ ์ปฌ๋ ‰์…˜์ด๋ž€?

        โ–ซ ๊ฐ™์€ ์„ฑ๊ฒฉ์„ ๋„๋Š” ๋ฐ์ดํ„ฐ์˜ ๋ชจ์Œ์„ ๋‹ด๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ๋ฅผ ๋งํ•œ๋‹ค.

 

        โ–ซ .NET ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ICollection ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†๋ฐ›๋Š”๋‹ค.

 

    โžฐ ์ปฌ๋ ‰์…˜ VS ์ผ๋ฐ˜ํ™” ์ปฌ๋ ‰์…˜

        ๐Ÿ”น ์ปฌ๋ ‰์…˜

             โ–ซ ์ปฌ๋ ‰์…˜ ํด๋ž˜์Šค๋“ค์€ ๋ชจ๋‘ objectํ˜•์‹ ๊ธฐ๋ฐ˜์œผ๋กœ ArrayList์˜ Add(), Insert() ๋ฉ”์†Œ๋“œ์˜ ์„ ์–ธ์„ ๋ณด๋ฉด

               object ํ˜•์‹์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐ›๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

             โ–ซ ์–ด๋–ค ํ˜•์‹์„ ๋„ฃ๋”๋ผ๋„ objectํ˜•์‹์œผ๋กœ ๋ฐ•์‹ฑ(Boxing)์ด ๋˜์–ด ์ž…๋ ฅ๋˜๊ณ 

               ๋ฐ˜๋Œ€๋กœ ArrayList์˜ ์š”์†Œ์— ์ ‘๊ทผํ•ด์„œ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ์›๋ž˜์˜ ๋ฐ์ดํ„ฐ ํ˜•์‹์œผ๋กœ ์–ธ๋ฐ•์‹ฑ(Unboxing)์ด ์ด๋ฃจ์–ด์ง„๋‹ค.
               (ํ˜•์‹ ๋ณ€ํ™˜)

 

             โ–ซ ์ปฌ๋ ‰์…˜์˜ ์š”์†Œ์— ์ ‘๊ทผํ•  ๋•Œ๋งˆ๋‹ค ํ˜•์‹ ๋ณ€ํ™˜์ด ์ผ์–ด๋‚˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก ์„ฑ๋Šฅ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚จ๋‹ค.

 

        ๐Ÿ”ธ ์ผ๋ฐ˜ํ™” ์ปฌ๋ ‰์…˜

             โ–ซ ์ผ๋ฐ˜ํ™” ์ปฌ๋ ‰์…˜์€ object ํ˜•์‹ ๊ธฐ๋ฐ˜์˜ ์ปฌ๋ ‰์…˜์ด ๊ฐ–๊ณ  ์žˆ๋˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค.

 

             โ–ซ ์ผ๋ฐ˜ํ™” ์ปฌ๋ ‰์…˜์€ ์ผ๋ฐ˜ํ™”์— ๊ธฐ๋ฐ˜ํ•ด์„œ ๋งŒ๋“ค์–ด์ ธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ปดํŒŒ์ผํ•  ๋•Œ ์ปฌ๋ ‰์…˜์—์„œ ์‚ฌ์šฉํ•  ํ˜•์‹์ด ๊ฒฐ์ •๋˜๊ธฐ
               ๋•Œ๋ฌธ์— ์“ธ๋ฐ์—†๋Š” ํ˜•์‹๋ณ€ํ™˜์„ ์ผ์œผํ‚ค์ง€ ์•Š๊ณ  ์ž˜๋ชป๋œ ํ˜•์‹์˜ ๊ฐ์ฒด๋ฅผ ๋‹ด๊ฒŒ ๋  ์œ„ํ—˜๋„ ํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๐Ÿ“– ์ปฌ๋ ‰์…˜๊ณผ ์ผ๋ฐ˜ํ™” ์ปฌ๋ ‰์…˜ 4๊ฐ€์ง€

1. ArrayList ์™€ List<T>

ArrayList 

  • ๊ฐ€์žฅ ๋ฐฐ์—ด๊ณผ ๋‹ฎ์€ ์ปฌ๋ ‰์…˜
  • ์š”์†Œ์— ์ ‘๊ทผํ•  ๋•Œ๋Š” [ ] ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•˜๊ณ , ํŠน์ • ์œ„์น˜์— ์žˆ๋Š” ์š”์†Œ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ž„์˜๋กœ ํ• ๋‹น ํ•  ์ˆ˜ ์žˆ๋‹ค
  • ์šฉ๋Ÿ‰์„ ๋ฏธ๋ฆฌ ์ง€์ •ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค
  • Method
    • Add() : ์ปฌ๋ ‰์…˜์˜ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์žˆ๋Š” ์š”์†Œ ๋’ค์— ์ƒˆ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€
    • RemoveAt() : ํŠน์ • ์ธ๋ฑ์Šค์— ์žˆ๋Š” ์š”์†Œ๋ฅผ ์ œ๊ฑฐ
    • Insert()  : ์›ํ•˜๋Š” ์œ„์น˜์— ์ƒˆ ์š”์†Œ๋ฅผ ์‚ฝ์ž…

List<T>

  • ArrayList์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ํ•˜๋ฉฐ ์‚ฌ์šฉ๋ฒ•๋„ ๋™์ผ
  • List<T> ํด๋ž˜์Šค๋Š” ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค ๋•Œ ํ˜•์‹ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ํ•„์š”๋กœ ํ•˜๊ณ , ํ˜•์‹ ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ์ž…๋ ฅํ•œ ํ˜•์‹ ์™ธ์—๋Š” ์ž…๋ ฅ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค

2. Queue ์™€ Queue<T>

Queue

  • FIFO (First In - First Out)
  • ๋ฐ์ดํ„ฐ๋‚˜ ์ž‘์—…์„ ์ฐจ๋ก€๋Œ€๋กœ ์ž…๋ ฅํ•ด๋’€๋‹ค๊ฐ€ ์ž…๋ ฅ๋œ ์ˆœ์„œ๋Œ€๋กœ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ
  • Method
    • Enqueue() : Queue ์— ๋ฐ์ดํ„ฐ ์ž…๋ ฅ
    • Dequeue() : ๋ฐ์ดํ„ฐ ๊บผ๋‚ผ ๋•Œ

Queue<T>

  • Queue์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ํ•˜๋ฉฐ ์‚ฌ์šฉ๋ฒ•๋„ ๋™์ผ
  • Queue<T> ํด๋ž˜์Šค๋Š” ํ˜•์‹ ๋งค๊ฐœ ๋ณ€์ˆ˜ ํ•„์š”

3. Stack ๊ณผ Stack<T>

Stack

  • LIFO (Last In - First Out)
  • ๋จผ์ € ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚˜์ค‘์— ๋‚˜๊ฐ€๊ณ , ๋‚˜์ค‘์— ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๋Š” ๋จผ์ € ๋‚˜๊ฐ€๋Š” ๊ตฌ์กฐ์˜ ์ปฌ๋ ‰์…˜
  • Method
    • Push() : Stack ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์„ ๋•Œ
    • Pop() : ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ผ ๋•Œ

Stack<T>

  • Stack์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ํ•˜๋ฉฐ ์‚ฌ์šฉ๋ฒ•๋„ ๋™์ผ
  • Stack<T> ํด๋ž˜์Šค๋Š” ํ˜•์‹ ๋งค๊ฐœ ๋ณ€์ˆ˜ ํ•„์š”

4. Hashtable ๊ณผ Dictionary<TKey, TValue>

Hashtable 

  • Key ์™€ Value์˜ ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ์‚ฌ์šฉ
  • ํƒ์ƒ‰ ์†๋„๊ฐ€ ๋น ๋ฅด๊ณ  ์‚ฌ์šฉ์ด ํŽธ๋ฆฌ
    • Hashing : ํ‚ค๋ฅผ ์ด์šฉํ•ด์„œ ๋‹จ๋ฒˆ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ์ปฌ๋ ‰์…˜ ๋‚ด์˜ ์ฃผ์†Œ๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค.

Dictionary<TKey, TValue>

  • Hashtable์˜ ์ผ๋ฐ˜ํ™” ๋ฒ„์ „

 

 

โ€ป ํ•ด๋‹น ํฌ์ŠคํŒ…์€ใ€Œ์ด๊ฒƒ์ด C#์ด๋‹ค(๋ฐ•์ƒํ˜„ ์ €)ใ€์ฑ… ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•