ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [์ž๋ฐ”(JAVA)] ์ปฌ๋ ‰์…˜ ArrayList, LinkedList, Stack, Queue, Set , Map
    JAVA 2023. 5. 23. 18:59
    728x90

     

    ๐Ÿ”ท Java ์ปฌ๋ ‰์…˜
    - Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์กฐ์ž‘ํ•˜๊ธฐ ์œ„ํ•œ ์ž๋ฃŒ ๊ตฌ์กฐ์˜ ์ง‘ํ•ฉ์ด๋‹ค.
    - ๋ฐฐ์—ด์„ ๋” ๊ณ ๋„ํ™” ์‹œํ‚จ ๊ฒƒ์œผ๋กœ ๋‹ค์ˆ˜์˜ ์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ๋” ์‰ฝ๊ณ  ํšจ๊ณผ์ ์œผ๋กœ ์ถ”๊ฐ€, ๊ฒ€์ƒ‰, ์ˆ˜์ • ๋ฐ ์‚ญ์ œ๋“ฑ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค.

     

     

    <์ข…๋ฅ˜>

    • List: ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ (๋ฐ์ดํ„ฐ ์ค‘๋ณต ํ—ˆ์šฉ)
    • Queue : ๋นจ๋Œ€๐Ÿฅค์ฒ˜๋Ÿผ ํ•œ์ชฝ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๊ณ  ๋ฐ˜๋Œ€์ชฝ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋บ„ ์ˆ˜ ์žˆ๋Š” ์ง‘ํ•ฉ(FIFO: First in First Out) (๋ฐ์ดํ„ฐ ์ค‘๋ณต ํ—ˆ์šฉ)
    • Set : ์ˆœ์„œ๊ฐ€ ์—†๋Š” ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ (๋ฐ์ดํ„ฐ ์ค‘๋ณต ํ—ˆ์šฉ ์•ˆํ•จ) - ์ˆœ์„œ์—†๊ณ  ์ค‘๋ณต์—†๋Š” ๋ฐฐ์—ด
    • Map : ์ˆœ์„œ๊ฐ€ ์—†๋Š” (Key,Value) ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ (Key๊ฐ’ ์ค‘๋ณต ํ—ˆ์šฉ ์•ˆํ•จ)

     

    Queue vs Set vs Map โ“


    1. Queue: ๋ฐ์ดํ„ฐ๋ฅผ FIFO(First-In-First-Out) ์ˆœ์„œ๋กœ ์ €์žฅํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ์ฃผ๋กœ ๋Œ€๊ธฐ์—ด์ด๋‚˜ ์ž‘์—… ํ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
    LinkedList๊ฐ€ Queue ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค.

    2. Set: ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
    HashSet๊ณผ TreeSet์ด Set ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ๋Œ€ํ‘œ์ ์ธ ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค.

    3. Map: ํ‚ค-๊ฐ’ ์Œ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ํ‚ค๋Š” ์ค‘๋ณต๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
    HashMap๊ณผ TreeMap์ด Map ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ๋Œ€ํ‘œ์ ์ธ ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค.

     

     

     


    ๐Ÿ“— List

    : ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ๋ฐ์ดํ„ฐ๋ฅผ ์ค‘๋ณต์œผ๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค(๋ฐฐ์—ด๊ณผ ์„ฑ์งˆ์ด ๋น„์Šทํ•จ)

     

     


     

    ๐Ÿ”ธ ArrayList

    : Array์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ ์š”์†Œ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ์ด๋ฉฐ, 

    ์ƒ์„ฑ์‹œ์ ์— ์ž‘์€ ์—ฐ์†๋œ ๊ณต๊ฐ„์„ ์š”์ฒญํ•ด์„œ ์ฐธ์กฐํ˜• ๋ณ€์ˆ˜๋“ค์„ ๋‹ด์•„๋†“๊ณ , ๊ฐ’์ด ์ถ”๊ฐ€๋ ๋•Œ ๋” ํฐ ๊ณต๊ฐ„์ด ํ•„์š”ํ•˜๋ฉด ๋” ํฐ ๊ณต๊ฐ„์„ ๋ฐ›์•„์„œ ์ €์žฅํ•˜๋Š” ๋™์ ๋ฐฐ์—ด์ด๋‹ค.

     

    ๐Ÿ’ฌ ๊ธฐ๋Šฅ
      º ์„ ์–ธ : ArrayList<Integer> intList ํ˜•ํƒœ๋กœ ์„ ์–ธ 
      º ์ƒ์„ฑ : new ArrayList<Integer>(); ํ˜•ํƒœ๋กœ ์ƒ์„ฑ
      º ์ดˆ๊ธฐํ™” : ์‚ฌ์ด์ฆˆ๋ฅผ ์ง€์ •ํ•˜๋Š”๊ฒƒ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ดˆ๊ธฐํ™”๊ฐ€ ํ•„์š” ์—†๋‹ค.
      º ๊ฐ’ ์ถ”๊ฐ€ : intList.add({์ถ”๊ฐ€ํ•  ๊ฐ’}) ํ˜•ํƒœ๋กœ ๊ฐ’์„ ์ถ”๊ฐ€
      º ๊ฐ’ ์ˆ˜์ • : intList.set({์ˆ˜์ •ํ•  ์ˆœ๋ฒˆ}, {์ˆ˜์ •ํ•  ๊ฐ’}) ํ˜•ํƒœ๋กœ ๊ฐ’์„ ์ˆ˜์ •
      º ๊ฐ’ ์‚ญ์ œ : intList.remove({์‚ญ์ œํ•  ์ˆœ๋ฒˆ}) ํ˜•ํƒœ๋กœ ๊ฐ’์„ ์‚ญ์ œ
      º ์ „์ฒด ์ถœ๋ ฅ : intList.toString() ํ˜•ํƒœ๋กœ ์ „์ฒด ๊ฐ’์„ ๋Œ€๊ด„ํ˜ธ[]๋กœ ๋ฌถ์–ด์„œ ์ถœ๋ ฅ
      º ์ „์ฒด ์ œ๊ฑฐ : intList.clear() ํ˜•ํƒœ๋กœ ์ „์ฒด ๊ฐ’์„ ์‚ญ์ œ

     

     


     

    ๐Ÿค” ArrayList๊ฐ€ Array์˜ ์„ฑ์งˆ์ด ์œ ์‚ฌํ•˜์ง€๋งŒ Array๋Š” ์ •์ ๋ฐฐ์—ด์ด๊ณ  ArrayList๋Š” ๋™์ ๋ฐฐ์—ด์ด๋‹ค.

    ๋‘๊ฐ€์ง€๊ฐ€ ๊ฐ๊ฐ ์–ด๋–ค ์ƒํ™ฉ์—์„œ ์žฅ๋‹จ์ ์„ ๊ฐ€์ง€๋Š”์ง€ ๊ถ๊ธˆํ•ด์กŒ๋‹ค!

    ๐Ÿ”ฝ๐Ÿ”ฝ๐Ÿ”ฝ

     

    1. ๊ณตํ†ต์ :

    ArrayList์™€ Array๋Š” ๋‘˜ ๋‹ค ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ๋กœ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ณตํ†ต์ ์„ ๊ฐ€์ง„๋‹ค.

    1. ๋ฐ์ดํ„ฐ ์ €์žฅ: ArrayList์™€ Array๋Š” ๋ชจ๋‘ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.
    2. ์ธ๋ฑ์Šค ๊ธฐ๋ฐ˜ ์ ‘๊ทผ: ๋‘˜ ๋‹ค ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์š”์†Œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

     

    2. ์ฐจ์ด์ :

       1. ํฌ๊ธฐ: Array๋Š” ๊ณ ์ • ํฌ๊ธฐ๋ฅผ ๊ฐ–๊ณ  ์žˆ์œผ๋ฉฐ ์„ ์–ธํ•  ๋•Œ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

           ArrayList๋Š” ํฌ๊ธฐ๊ฐ€ ๊ฐ€๋ณ€์ ์ด๋ฉฐ ํ•„์š”์— ๋”ฐ๋ผ ๋™์ ์œผ๋กœ ํฌ๊ธฐ๊ฐ€ ์กฐ์ •๋ฉ๋‹ˆ๋‹ค.

       2. ํƒ€์ž…: Array๋Š” ํŠน์ • ๋ฐ์ดํ„ฐ ํƒ€์ž…์˜ ์š”์†Œ๋งŒ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

           ArrayList๋Š” ์ œ๋„ค๋ฆญ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ํƒ€์ž…์˜ ์š”์†Œ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

       3. ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น: Array๋Š” ์š”์†Œ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์—ฐ์†์ ์œผ๋กœ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.

           ArrayList๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ Array๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ, ํฌ๊ธฐ๊ฐ€ ์กฐ์ •๋  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด Array๋ฅผ ํ• ๋‹นํ•˜๊ณ  ๊ธฐ์กด ์š”์†Œ๋ฅผ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.

       4. ์ถ”๊ฐ€/์‚ญ์ œ: Array์˜ ํฌ๊ธฐ๋Š” ๊ณ ์ •๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

           ArrayList๋Š” ๋™์ ์œผ๋กœ ํฌ๊ธฐ๊ฐ€ ์กฐ์ •๋˜๋ฏ€๋กœ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

     

     

    3. ์‚ฌ์šฉ ์˜ˆ์‹œ:

    • Array:
      • int[] numbers = new int[5]; // ํฌ๊ธฐ๊ฐ€ 5์ธ ์ •์ˆ˜ํ˜• Array ์ƒ์„ฑ
      • String[] names = {"John", "Jane", "Tom"}; // ์ดˆ๊ธฐ๊ฐ’์„ ๊ฐ€์ง€๋Š” ๋ฌธ์ž์—ด Array ์ƒ์„ฑ
      • Array๋Š” ํฌ๊ธฐ๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์— ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.
      • ๋˜ํ•œ ์„ฑ๋Šฅ์ด ์ค‘์š”ํ•œ ์ƒํ™ฉ์—์„œ Array๊ฐ€ ๋” ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ArrayList:
      • ArrayList<Integer> numbers = new ArrayList<>(); // ์ •์ˆ˜ํ˜• ์š”์†Œ๋ฅผ ๊ฐ€์ง€๋Š” ArrayList ์ƒ์„ฑ
      • ArrayList<String> names = new ArrayList<>(Arrays.asList("John", "Jane", "Tom")); // ์ดˆ๊ธฐ๊ฐ’์„ ๊ฐ€์ง€๋Š” ๋ฌธ์ž์—ด ArrayList ์ƒ์„ฑ
      • ArrayList๋Š” ํฌ๊ธฐ๊ฐ€ ๋™์ ์œผ๋กœ ์กฐ์ •๋˜์–ด์•ผ ํ•˜๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์— ์ฃผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
      • ๋˜ํ•œ ๋‹ค์–‘ํ•œ ํƒ€์ž…์˜ ์š”์†Œ๋ฅผ ํฌํ•จํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์—์„œ ์œ ์—ฐ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

     

     

    Array๋Š” ์„ ์–ธํ•  ๋•Œ ํฌ๊ธฐ๊ฐ€ ๊ณ ์ •๋˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์—ฐ์†์ ์œผ๋กœ ํ• ๋‹น๋˜๊ธฐ ๋•Œ๋ฌธ์—, ํฌ๊ธฐ๋ฅผ ๋™์ ์œผ๋กœ ์กฐ์ •ํ•˜๊ฑฐ๋‚˜ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ์ˆ˜ ์—†๋‹ค.

     

    ๋งŒ์•ฝ Array์— ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•ด์•ผ ํ•œ๋‹ค๋ฉด, ์ƒˆ๋กœ์šด Array๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ธฐ์กด์˜ ์š”์†Œ๋ฅผ ๋ณต์‚ฌํ•˜๋Š” ๋ฐฉ๋ฒ•๋ฐ–์— ์—†๋‹ค.

    ์ถ”๊ฐ€ ๋˜๋Š” ์‚ญ์ œํ•  ์œ„์น˜์— ์š”์†Œ๋ฅผ ์‚ฝ์ž…ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•œ ๋’ค, ๊ธฐ์กด์˜ ์š”์†Œ๋“ค์„ ์ƒˆ๋กœ์šด Array์— ๋ณต์‚ฌํ•˜์—ฌ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผ ํ•˜๋ฉฐ, ์ด๋Š” ์ƒ๋Œ€์ ์œผ๋กœ ๋ฒˆ๊ฑฐ๋กญ๊ณ  ๋น„ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ๋‹ค.

    ํฌ๊ธฐ๋ฅผ ๋™์ ์œผ๋กœ ์กฐ์ ˆํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์—์„œ๋Š” ArrayList๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์ ํ•ฉํ•˜๋‹ค. ArrayList๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ Array๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ, ํฌ๊ธฐ ์กฐ์ •์ด ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด Array๋ฅผ ํ• ๋‹นํ•˜๊ณ  ๊ธฐ์กด ์š”์†Œ๋ฅผ ๋ณต์‚ฌํ•˜๋Š” ์ž‘์—…์„ ๋‚ด๋ถ€์—์„œ ์ฒ˜๋ฆฌํ•œ๋‹ค.

    ์ด๋ฅผ ํ†ตํ•ด ์š”์†Œ์˜ ์ถ”๊ฐ€ ๋˜๋Š” ์‚ญ์ œ๊ฐ€ ๊ฐ„ํŽธํ•˜๊ณ  ํšจ์œจ์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค.

    ๋”ฐ๋ผ์„œ ์š”์†Œ์˜ ์ถ”๊ฐ€ ๋˜๋Š” ์‚ญ์ œ๊ฐ€ ๋นˆ๋ฒˆํ•˜๊ฒŒ ๋ฐœ์ƒํ•˜๋Š” ์ƒํ™ฉ์—์„œ๋Š” ArrayList๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์ ํ•ฉํ•˜๋‹ค.

     

     

     

     

    โ— ์œ„์˜ ์„ค๋ช…๋Œ€๋กœ๋ผ๋ฉด ArrayList์˜ ํฌ๊ธฐ๊ฐ€ ๋ณ€๊ฒฝ๋  ๊ฒฝ์šฐ ๊ธฐ์กด ์š”์†Œ๋ฅผ ๋ณต์‚ฌํ•ด์„œ ์ƒˆ๋กœ์šด Array๋ฅผ ํ• ๋‹นํ•˜๋Š”๊ฑด๋ฐ ๊ทธ๋Ÿผ ๋‚ด๋ถ€์ ์œผ๋กœ ์ฐจ์ง€ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋Š˜์–ด๋‚˜์„œ ๊ฒฐ๋ก ์ ์œผ๋ก  ๋น„์šฉ์ด ์ฆ๊ฐ€ํ•˜๋Š”๊ฒŒ ์•„๋‹๊นŒ? 

     

    ๐Ÿ‘‰ ๊ฒฐ๋ก : ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ์ฒ˜๋ฆฌํ•œ๋‹ค.

    ArrayList์˜ ํฌ๊ธฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜์–ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณผ์ •์„ ๊ฑฐ์น˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

    1. ์ƒˆ๋กœ์šด ArrayList๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
    2. ๊ธฐ์กด์˜ ArrayList์— ์žˆ๋Š” ์š”์†Œ๋“ค์„ ์ƒˆ๋กœ์šด ArrayList๋กœ ๋ณต์‚ฌํ•œ๋‹ค.
    3. ์ƒˆ๋กœ์šด ArrayList๋ฅผ ๊ธฐ์กด์˜ ArrayList๋กœ ์ฐธ์กฐํ•œ๋‹ค.

    ์ด ๊ณผ์ •์—์„œ ๊ธฐ์กด์˜ ArrayList๋Š” ๋” ์ด์ƒ ์ฐธ์กฐ๋˜์ง€ ์•Š๋Š” ๊ฐ์ฒด๊ฐ€ ๋˜๋ฉฐ, Java์˜ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฉ๋‹ˆ๋‹ค.
    ๊ธฐ์กด์˜ ArrayList๋Š” ์‚ญ์ œ๋˜๊ณ , ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณ„์† ์ฐจ์ง€ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๊ธฐ๋•Œ๋ฌธ์— ArrayList์˜ ํฌ๊ธฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜์–ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๊ธฐ์กด์˜ ArrayList๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ์ƒˆ๋กœ์šด ArrayList๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ธฐ์กด์˜ ArrayList๋Š” ์‚ญ์ œ๋˜๋ฏ€๋กœ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋Š” ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

     


     

    ๐Ÿค” ArrayList์— ๋Œ€ํ•œ ์„ค๋ช…์€ ์ดํ•ด๋˜๋‚˜, ์„ฑ๋Šฅ์ด ์ค‘์š”ํ•œ ๊ฒฝ์šฐ Array๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ๋” ํšจ์œจ์ ์ด๋ผ๋Š” ๋ถ€๋ถ„์ด ์ดํ•ด๋˜์ง€ ์•Š์•„์„œ ๋‹ค์‹œ ์ฐพ์•„๋ณด์•˜๋‹ค.

     

     

    4. Array๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ ์„ฑ๋Šฅ๋ฉด์—์„œ ๋” ํšจ์œจ์ ์ธ ์ด์œ 

     

    1. ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ: Array๋Š” ๊ณ ์ • ํฌ๊ธฐ๋ฅผ ๊ฐ–๊ณ  ์žˆ์œผ๋ฉฐ, ์š”์†Œ๋“ค์ด ์—ฐ์†์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น๋œ๋‹ค.

    ์ด๋กœ ์ธํ•ด ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์ด ๋” ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค. ArrayList๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ Array๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ, ํฌ๊ธฐ๊ฐ€ ๋™์ ์œผ๋กœ ์กฐ์ •๋  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด Array๋ฅผ ํ• ๋‹นํ•˜๊ณ  ๊ธฐ์กด ์š”์†Œ๋ฅผ ๋ณต์‚ฌํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์ด ๋” ๋งŽ์•„์งˆ ์ˆ˜ ์žˆ๋‹ค.
    2. ์ ‘๊ทผ ์†๋„: Array๋Š” ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์š”์†Œ์— ์ง์ ‘ ์ ‘๊ทผํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ArrayList๋ณด๋‹ค ์ ‘๊ทผ ์†๋„๊ฐ€ ๋น ๋ฆ…๋‹ˆ๋‹ค. ArrayList๋Š” ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์š”์†Œ์— ์ ‘๊ทผํ•˜๋Š” ๊ฒฝ์šฐ ๋‚ด๋ถ€์ ์œผ๋กœ ์ธ๋ฑ์Šค ๊ณ„์‚ฐ ๋“ฑ์˜ ์ถ”๊ฐ€ ์ž‘์—…์ด ํ•„์š”ํ•˜๋‹ค.
    3. ํฌ๊ธฐ ๋ณ€๊ฒฝ ๋นˆ๋„: Array๋Š” ๊ณ ์ • ํฌ๊ธฐ๋ฅผ ๊ฐ–๊ธฐ ๋•Œ๋ฌธ์— ํฌ๊ธฐ๋ฅผ ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ์ƒํ™ฉ์—์„œ๋Š” Array๊ฐ€ ๋” ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค. ํฌ๊ธฐ ๋ณ€๊ฒฝ ์ž‘์—…์€ ArrayList์—์„œ ์ƒˆ๋กœ์šด Array๋ฅผ ํ• ๋‹นํ•˜๊ณ  ์š”์†Œ๋ฅผ ๋ณต์‚ฌํ•ด์•ผ ํ•˜๋Š” ๋น„์šฉ์ด ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

     

    ๋”ฐ๋ผ์„œ, ํฌ๊ธฐ๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ๊ณ  ์š”์†Œ์˜ ์ถ”๊ฐ€ ๋˜๋Š” ์‚ญ์ œ๊ฐ€ ๋นˆ๋ฒˆํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๊ณผ ์ ‘๊ทผ ์†๋„๊ฐ€ ์ค‘์š”ํ•œ ๊ฒฝ์šฐ์—๋Š” Array๊ฐ€ ์„ฑ๋Šฅ์ ์œผ๋กœ ๋” ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์š”์†Œ์˜ ์ถ”๊ฐ€ ๋˜๋Š” ์‚ญ์ œ๊ฐ€ ๋นˆ๋ฒˆํ•˜๊ฑฐ๋‚˜ ํฌ๊ธฐ๊ฐ€ ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝ๋˜์–ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์—์„œ๋Š” ArrayList๊ฐ€ ๋” ์ ํ•ฉํ•˜๋‹ค. 

    ์„ฑ๋Šฅ์— ๋Œ€ํ•œ ์ƒ๋Œ€์ ์ธ ํšจ์œจ์„ฑ์€ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์‹ค์ œ ์‚ฌ์šฉ ์‹œ์—๋Š” ์ƒํ™ฉ์— ๋งž๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

     

     


     

     

     

     

    โœ… ArrayList ์„ ์–ธ

    // ArrayList๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ import java.util.ArrayList;๋ฅผ ๋จผ์ € ์ถ”๊ฐ€ํ•ด์•ผ๋จ
    
    // ArrayList<๋ž˜ํผํƒ€์ž…> ๋ฆฌ์ŠคํŠธ๋ช… = new ArrayList<๋ž˜ํผํƒ€์ž…>();  
     ArrayList<Integer> intList = new ArrayList<Integer>(); // ์„ ์–ธ + ์ƒ์„ฑ

     

     

    โœ… ArrayList ์ถ”๊ฐ€

       public static void main(String[] args) {
            // ArrayList<๋ž˜ํผํƒ€์ž…> ๋ฐฐ์—ด๋ช… = new ArrayList<๋ž˜ํผํƒ€์ž…>();
            ArrayList<Integer> intList = new ArrayList<Integer>(); 
            intList.add(1);  // ๋ž˜ํผ ํƒ€์ž…์ด Intger๋ผ์„œ 1,2์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Œ
            intList.add(2);
            intList.add("์ˆซ์ž");  // ํƒ€์ž… ๋ถˆ์ผ์น˜๋กœ ์˜ค๋ฅ˜
        }

     

    โœ… ArrayList ์ˆ˜์ •

    intList.set(1, 10);  // ๋ฆฌ์ŠคํŠธ ๊ฐ’(15)์„ 10์œผ๋กœ ๋ฐ”๊พธ๊ธฐ
    System.out.println(intList.get(1));

     

     


     

     

    ๐Ÿ”ธ LinkedList

    : ๋ฉ”๋ชจ๋ฆฌ์— ๋‚จ๋Š” ๊ณต๊ฐ„์„ ์š”์ฒญํ•ด์„œ ์—ฌ๊ธฐ์ €๊ธฐ ๋‚˜๋ˆ„์–ด์„œ ์‹ค์ œ๊ฐ’์„ ๋‹ด์•„๋†“๊ณ , ์‹ค์ œ๊ฐ’์ด ์žˆ๋Š” ์ฃผ์†Œ๊ฐ’์œผ๋กœ ๋ชฉ๋ก์„ ๊ตฌ์„ฑํ•˜๊ณ  ์ €์žฅํ•œ๋‹ค.

    => ์‹ค์ œ ๊ฐ’์ด ์žˆ๋Š” ์ฃผ์†Œ๊ฐ’์œผ๋กœ ๋ชฉ๋ก์„ ๊ตฌ์„ฑํ•˜๊ณ  ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ

     

    ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋Šฅ์€ ArrayList ์™€ ๋™์ผํ•˜์ง€๋งŒ LinkedList ๋Š” ๊ฐ’์„ ๋‚˜๋ˆ„์–ด ๋‹ด๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“ ๊ฐ’์„ ์กฐํšŒํ•˜๋Š” ์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค.

    ๋Œ€์‹ , ๊ฐ’์„ ์ค‘๊ฐ„์— ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ• ๋•Œ๋Š” ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค.

    * ArrayList ์˜ ๊ฒฝ์šฐ ์ถ”๊ฐ€, ์‚ญ์ œ์‹œ ๊ทธ ์ˆœ์„œ๋ฅผ ์ „๋ถ€ ๋ณด์ •ํ•ด์ค˜์•ผ ํ•˜๊ธฐ๋•Œ๋ฌธ์— ์ƒ๋Œ€์ ์œผ๋กœ ๋Š๋ฆฌ๋‹ค.

     

     

     

     

     

    โœ…LinkedList ์˜ˆ์‹œ

    public static void main(String[] args) {
            // Linked List
            // ๋ฉ”๋ชจ๋ฆฌ์— ๋‚จ๋Š” ๊ณต๊ฐ„์„ ์š”์ฒญํ•ด์„œ ์—ฌ๊ธฐ ์ €๊ธฐ ๋‚˜๋ˆ„์–ด์„œ ์‹ค์ œ ๊ฐ’์„ ๋‹ด๋Š”๋‹ค
            // ์‹ค์ œ ๊ฐ’์ด ์žˆ๋Š” ์ฃผ์†Œ๊ฐ’์œผ๋กœ ๋ชฉ๋ก์„ ๊ตฌ์„ฑํ•˜๊ณ  ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ
            LinkedList<Integer> linkedList = new LinkedList<Integer>();
            linkedList.add(5);
            linkedList.add(10);
            linkedList.add(15);
    
            System.out.println(linkedList.get(0));
            System.out.println(linkedList.get(1));
            System.out.println(linkedList.get(2));
            System.out.println(linkedList.toString());   // ์ „์ฒด์กฐํšŒ
        }

    -> ์ „์ฒด์กฐํšŒ์‹œ ์†๋„๊ฐ€ ์–ด๋ ˆ์ด ๋ฆฌ์ŠคํŠธ์— ๋น„ํ•ด ํ˜„์ €ํžˆ ๋Š๋ฆฌ๋‹ค

    ( ๋ถ„์‚ฐ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํ•ฉํ•ด์„œ ๊ฐ€์ ธ์™€์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ)

     

     

     

    โœ…LinkedList ๊ฐ’ ์ถ”๊ฐ€

      linkedList.add(2, 4);  // 2๋ฒˆ ์ธ๋ฑ์Šค์— 4 ์ถ”๊ฐ€(๋น ๋ฆ„)
      System.out.println(linkedList.toString());  // [5, 10, 4, 15]

     

     


    ๐Ÿ“— Stack (์Šคํƒ)

    : Stack์€ ๋ฐ•์Šค์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง์œผ๋กœ ์Œ“์•„๋†“๊ณ  ๋„ฃ์—ˆ๋‹ค๊ฐ€ ๋นผ๋Š” ํ›„์ž…์„ ์ถœ(LIFO, Last-In-First-Out) ๋ฐฉ์‹์„ ๋”ฐ๋ฅด๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.

     

    • ๊ฐ€์žฅ ์ตœ๊ทผ์— ์ถ”๊ฐ€๋œ ํ•ญ๋ชฉ์ด ๋งจ ์œ„์— ์œ„์น˜ํ•˜๋ฉฐ, ์ด ํ•ญ๋ชฉ์ด ๊ฐ€์žฅ ๋จผ์ € ์ œ๊ฑฐ๋œ๋‹ค.
    • ์Šคํƒ์— ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ์ž‘์—…(push()) / ์กฐํšŒ(peek()), ์ œ๊ฑฐ(pop()) ์„ธ๊ฐ€์ง€ ๊ธฐ๋Šฅ์„ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.
    • ์ฃผ๋กœ ์ตœ๊ทผ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜์—ดํ•˜๊ฑฐ๋‚˜ ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ ์Šคํƒ, ๋ธŒ๋ผ์šฐ์ €์˜ ์ด์ „ ํŽ˜์ด์ง€ ๊ธฐ๋ก ๋“ฑ์— ์‚ฌ์šฉ๋œ๋‹ค.

     

     

    // ์Šคํƒ (Stack):
    
        โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
        โ”‚       โ”‚
        โ”‚   3   โ”‚
        โ”‚   2   โ”‚
        โ”‚   1   โ”‚
        โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

     

     

     

     

    โœ… Stack์˜ ์‚ฌ์šฉ์˜ˆ์‹œ

      public static void main(String[] args) {
            // Stack (Basket)
            // ์ˆ˜์ง์œผ๋กœ ๊ฐ’์„ ์Œ“์•„๋†“๊ณ , ๋„ฃ์—ˆ๋‹ค๊ฐ€ ๋บ€๋‹ค (FILO) first in last out
            // ์ฃผ์š”๊ธฐ๋Šฅ: ๊ฐ’ ์ถ”๊ฐ€, ์กฐํšŒ, ๊บผ๋ƒ„
            // push, peek, pop
            // ์ตœ๊ทผ ์ €์ •๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜์—ดํ•˜๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์ฒ˜๋ฆฌ๋ฅผ ๋ง‰๊ณ ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•จ
            Stack<Integer> intStack = new Stack<Integer>();   // ์„ ์–ธ
    
            intStack.push(10);
            intStack.push(20);
            intStack.push(30);
    
            while (!intStack.isEmpty()) { // intStack์ด empty๊ฐ€ ์•„๋‹๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•œ๋‹ค
                System.out.println(intStack.pop()); // ์ œ์ผ ์ตœ์‹ ๋ฐ์ดํ„ฐ๋ถ€ํ„ฐ ๊บผ๋‚ด์ค€๋‹ค (pop์€ ๊บผ๋‚ด๋ฉด ์‚ญ์ œ๋จ)
            }
        }

     

       intStack.push(10);
            intStack.push(20);
            intStack.push(30);
    
            System.out.println(intStack.peek()); // ์ถœ๋ ฅ๊ฐ’: 30

     

     


     

    ๐Ÿ“— Queue (ํ)

    Queue๋Š” ๋นจ๋Œ€์ฒ˜๋Ÿผ ํ•œ์ชฝ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๊ณ  ๋ฐ˜๋Œ€์ชฝ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋บ„ ์ˆ˜ ์žˆ๋Š” ์ง‘ํ•ฉ์œผ๋กœ FIFO(First in First Out)๋ฐฉ์‹์„ ๋”ฐ๋ฅด๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.

    • ๊ฐ€์žฅ ๋จผ์ € ์ถ”๊ฐ€๋œ ํ•ญ๋ชฉ์ด ๋งจ ์•ž์— ์œ„์น˜ํ•˜๋ฉฐ, ์ด ํ•ญ๋ชฉ์ด ๊ฐ€์žฅ ๋จผ์ € ์ œ๊ฑฐ๋œ๋‹ค.
    • ํ์— ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ์ž‘์—…์„ "enqueue"๋ผ๊ณ  ํ•˜๊ณ , ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ์ž‘์—…์„ "dequeue"๋ผ๊ณ  ํ•œ๋‹ค.
    • Queue๋Š” ์ƒ์„ฑ์ž๊ฐ€ ์—†๋Š” ์ธํ„ฐํŽ˜์ด์Šค์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ”๋กœ ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์ƒ์„ฑ์ž๊ฐ€ ์กด์žฌํ•˜๋Š” LinkedList๋“ฑ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์ถ”๊ฐ€(add()), ์กฐํšŒ(peek()), ๊บผ๋‚ด๊ธฐ_์‚ญ์ œ๋จ(poll())
    • ์ฃผ์š” ํ™œ์šฉ ์˜ˆ์‹œ: ์ž‘์—… ๋Œ€๊ธฐ์—ด, ๋ฉ”์‹œ์ง€ ํ ๋“ฑ

     

     

     

     

    โœ… Queue ์‚ฌ์šฉ์˜ˆ์‹œ

    public static void main(String[] args) {
            Queue<Integer> intQueue = new LinkedList<>();  // Queue๋ฅผ ์„ ์–ธ, ์ƒ์„ฑ
    
            intQueue.add(1);
            intQueue.add(5);
            intQueue.add(9);
    
            while (!intQueue.isEmpty()){
              System.out.println(intQueue.poll()); // ์ถœ๋ ฅ: 1 -> 5 -> 9
            }
    
            intQueue.add(1);
            intQueue.add(5);
            intQueue.add(9);
    
            System.out.println(intQueue.peek()); // ์ถœ๋ ฅ: 1
        }

     

     


    ๐Ÿ“— Set(์ง‘ํ•ฉ)

    Set์€ ์ˆœ์„œ๊ฐ€ ์—†๋Š” ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ์œผ๋กœ ๋ฐ์ดํ„ฐ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์€๋‹ค.

    /// Set
    	{ 1, 2, 3, 4, 5 }

     

    • Set์€ ๋‹จ๋…์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‚˜ HashSet, TreeSet ๋“ฑ์œผ๋กœ ์‘์šฉํ•ด์„œ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์ฃผ์š” ํ™œ์šฉ ์˜ˆ์‹œ: ์ค‘๋ณต ์ œ๊ฑฐ, ๋ฉค๋ฒ„์‹ญ ํ…Œ์ŠคํŠธ ๋“ฑ
    • ์ถ”๊ฐ€(add()), ์กฐํšŒ(.get(์ˆœ๋ฒˆ)), ์‚ญ์ œ(.remove()), ํฌํ•จ์—ฌ๋ถ€ ํ™•์ธ_๋…ผ๋ฆฌ๊ฐ’์ถœ๋ ฅ(.contains(ํ™•์ธํ•  ๊ฐ’))

     

     

     

     

     

    โœ… Set ์‚ฌ์šฉ์˜ˆ์‹œ

     public static void main(String[] args) {
            Set<Integer> intSet = new HashSet<>(); // ์„ ์–ธ ๋ฐ ์ƒ์„ฑ
    
            intSet.add(1);
            intSet.add(12);
            intSet.add(5);
            intSet.add(9);
            intSet.add(12);		// ์ค‘๋ณต๋ถˆ๊ฐ€๋กœ ๋ฎ์–ด์“ฐ๊ธฐ๋จ
    
            for(Integer value:intSet) {
                System.out.println(value);
            }
        }

     

            intSet.add(1);
            intSet.add(12);     ์ค‘๋ณต์œผ๋กœ ๋งˆ์ง€๋ง‰๊ฐ’์— ๋ฎ์–ด์“ฐ๊ธฐ ๋˜์—ˆ์Œ
            intSet.add(5);
            intSet.add(9);
            intSet.add(12);

     

    -> ๊ฒฐ๊ณผ๊ฐ’ (์ค‘๋ณต ์ œ๊ฑฐ๋จ)

     

     

    โœ… contains ์‚ฌ์šฉ 

    : ์–ด๋–ค ๊ฐ’์ด ์กด์žฌํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

    true or fales

    System.out.println(intSet.contains(2)); //intSet์ด 2๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š”์ง€ ์—ฌ๋ถ€ ํ™•์ธ
    System.out.println(intSet.contains(5));

     

     

    ๐Ÿ“ŒTIP)  HashSet vs TreeSet vs LinkedHashSet 

    HashSet : ๊ฐ€์žฅ ๋น ๋ฅด๋ฉฐ ์ˆœ์„œ๋ฅผ ์ „ํ˜€ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†์Œ
    TreeSet : ์ •๋ ฌ๋œ ์ˆœ์„œ๋Œ€๋กœ ๋ณด๊ด€ํ•˜๋ฉฐ ์ •๋ ฌ ๋ฐฉ๋ฒ•์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Œ
    LinkedHashSet : ์ถ”๊ฐ€๋œ ์ˆœ์„œ, ๋˜๋Š” ๊ฐ€์žฅ ์ตœ๊ทผ์— ์ ‘๊ทผํ•œ ์ˆœ์„œ๋Œ€๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅ

    ๋ณดํ†ต HashSet ์„ ์ฃผ๋กœ ์“ฐ๋Š”๋ฐ ์ˆœ์„œ๋ณด์žฅ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋Š” LinkedHashSet ์„ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

     

    ๐Ÿ“— Map

    : Map์€ ํ‚ค-๊ฐ’(key-value) ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ, key๊ฐ’์€ uniqueํ•˜๊ฒŒ ๋ณด์žฅ๋œ๋‹ค.

    • ์ˆœ๋ฒˆ์œผ๋กœ ์กฐํšŒํ•˜๋˜ ๊ธฐ์กด๋ฐฉ์‹์—์„œ ํŠน์ • key๊ฐ’์— ๋งค์นญ๋˜๋Š” vlaue๊ฐ’์œผ๋กœ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๋งต์— ์ƒˆ๋กœ์šด ํ‚ค-๊ฐ’ ์Œ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด์˜ ์Œ์„ ์ œ๊ฑฐํ•˜๋Š” ์ž‘์—…์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
    • Map ์€ ๊ทธ๋ƒฅ Map์œผ๋กœ ์“ธ์ˆ˜๋„์žˆ์ง€๋งŒ HashMap, TreeMap๋“ฑ์œผ๋กœ ์‘์šฉํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์ถ”๊ฐ€(.put({์ถ”๊ฐ€ํ•  Key๊ฐ’}, {์ถ”๊ฐ€ํ•  Value๊ฐ’})), ์กฐํšŒ(.get(์กฐํšŒํ•  Key๊ฐ’)), ์‚ญ์ œ(.remove(์‚ญ์ œํ•  Key๊ฐ’)), ์ „์ฒด key์กฐํšŒ(.keySet()), ์ „์ฒด value ์กฐํšŒ(.values())
    • ์ฃผ์š” ํ™œ์šฉ ์˜ˆ์‹œ: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ์‚ฌ์ „, ์„ค์ • ์ •๋ณด ๋“ฑ

     

     

     

    โœ… Map ์˜ˆ์‹œ 

     

    public static void main(String[] args) {
            // Map : key-value pair
            // key๋ผ๋Š” ๊ฐ’์œผ๋กœ uniqueํ•˜๊ฒŒ ๋ณด์žฅ๋˜์–ด์•ผ ํ•จ.
    
            // key๋Š” String, value๋Š” Integer๋กœ ์„ ์–ธ
            Map<String, Integer> intMap = new HashMap<>();
    
            intMap.put("์ผ", 1);
            intMap.put("์ด", 2);
            intMap.put("์‚ผ", 3);
            intMap.put("์‚ผ", 33);     // ์ค‘๋ณต key
            intMap.put("์‚ผ", 3333);   // ์ค‘๋ณต key
    
            for(String key:intMap.keySet()){  // keySet: key๊ฐ’๋งŒ ๋นผ์„œ ๋ฐฐ์—ด๋กœ ๋งŒ๋“œ๋Š” ๊ธฐ๋Šฅ
                System.out.println(key);
            }

     

    ์ค‘๋ณต๋œ key๋Š” ์ƒ๋žตํ•ด๋ฒ„๋ฆผ.

    ์ค‘๋ณต key๋Š” ๋ฎ์–ด์“ฐ๊ธฐ๊ฐ€ ์ง„ํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์—

    ์ถœ๋ ฅ์‹œ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ๊ฐ’์ด ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค.

     

     

     

     

     

    ๋ฒˆ์™ธ) HashMap ํ‚ค, ๋ฒจ๋ฅ˜ ์ถœ๋ ฅ๋ฐฉ๋ฒ•

    https://imcodiiing.tistory.com/manage/posts/

     

    Tistory

    ์ข€ ์•„๋Š” ๋ธ”๋กœ๊ฑฐ๋“ค์˜ ์œ ์šฉํ•œ ์ด์•ผ๊ธฐ

    www.tistory.com

     

     

     

     

     

    ๊ฐ ์ข…๋ฅ˜๋ณ„ ๋ช…๋ น์–ด ์ •๋ฆฌ

     

    ์ข…๋ฅ˜ ArrayList LinkedList Stack Queue Set Map
    ์„ ์–ธ ๋ฐ ์ƒ์„ฑ ArrayList <integer> IntList
    = new ArrayList<Integer>();
    LinkedList<Integer> linkedList
    = new LinkedList<>();
    Stack<Integer> intStack = new Stack<Integer>(); Queue<Integer> intQueue = new LinkedList<>(); Set<Integer> intSet = new HashSet<Integer>();  
    ๊ฐ’ ์ถ”๊ฐ€ intList.add({์ถ”๊ฐ€ํ•  ๊ฐ’}) linkedList.add({์ถ”๊ฐ€ํ•  ๊ฐ’}) intStack.push({์ถ”๊ฐ€ํ•  ๊ฐ’}) intQueue.add({์ถ”๊ฐ€ํ•  ๊ฐ’}) intSet.add({์ถ”๊ฐ€ํ•  ๊ฐ’}) intMap.put({์ถ”๊ฐ€ํ•  Key๊ฐ’},{์ถ”๊ฐ€ํ•  Value๊ฐ’})
    ๊ฐ’ ์ค‘๊ฐ„์ถ”๊ฐ€   linkedList.add({์ถ”๊ฐ€ํ•  ์ˆœ๋ฒˆ}, {์ถ”๊ฐ€ํ•  ๊ฐ’})        
    ๊ฐ’ ์ˆ˜์ • intList.set({์ˆ˜์ •ํ•  ์ˆœ๋ฒˆ},{์ˆ˜์ •ํ•  ๊ฐ’}) linkedList.set({์ˆ˜์ •ํ•  ์ˆœ๋ฒˆ}, {์ˆ˜์ •ํ•  ๊ฐ’})        
    ๊ฐ’ ์‚ญ์ œ intList.remove({์‚ญ์ œํ•  ์ˆœ๋ฒˆ}) linkedList.remove({์‚ญ์ œํ•  ์ˆœ๋ฒˆ})     intSet.remove({์‚ญ์ œํ•  ๊ฐ’})  
    ์ „์ฒด ์ถœ๋ ฅ intList.toString() linkedList.toString()       Key์กฐํšŒ :intMap.keySet()

    vallue ์กฐํšŒ
    intMap.values()
    ์ „์ฒด ์ œ๊ฑฐ intList.clear() linkedList.clear()        
    ํŠน์ •๊ฐ’ ์ œ๊ฑฐ           intMap.remove({์‚ญ์ œํ•  Key๊ฐ’})
    ์กฐํšŒ     intStack.peek() intQueue.peek() intSet.get({์ดˆํšŒํ•  ์ˆœ๋ฒˆ}) intMap.get({์กฐํšŒํ•  Key๊ฐ’})
    ๊บผ๋‚ด๊ธฐ     intStack.pop() intQueue.poll()    
    ๊ฐ’ ํฌํ•จ ํ™•์ธ         intSet.contains({ํฌํ•จํ™•์ธ ํ•  ๊ฐ’})  

     

     


     

    ์ž๋ฃŒ๊ตฌ์กฐ๋“ค์€ ๊ฐ๊ฐ์˜ ํŠน์„ฑ๊ณผ ํ™œ์šฉ ๋ชฉ์ ์— ๋”ฐ๋ผ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

    Stack(์Šคํƒ)๊ณผ Queue(ํ)๋Š” ๋ฐ์ดํ„ฐ์˜ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ์— ์ง‘์ค‘๋˜์–ด ์žˆ๋Š”๋ฐ,
    โœ”Stack(์Šคํƒ)์€ ๊ฐ€์žฅ ์ตœ๊ทผ์— ์ถ”๊ฐ€๋œ ํ•ญ๋ชฉ์— ์ ‘๊ทผํ•˜๋Š” ๊ฒฝ์šฐ ์ฃผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
    โœ”Queue(ํ)๋Š” ๋จผ์ € ์ถ”๊ฐ€๋œ ํ•ญ๋ชฉ์— ์ ‘๊ทผํ•˜๋Š” ๊ฒฝ์šฐ ์ฃผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
    โœ”Set(์ง‘ํ•ฉ)์€ ์ค‘๋ณต๋œ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๊ณ ์œ ํ•œ ๊ฐ’๋“ค์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ,
    โœ”Map(๋งต)์€ ํ‚ค-๊ฐ’ ์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์กฐํ™”ํ•˜๊ณ  ์ ‘๊ทผํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

     

    728x90
Designed by Tistory.