Collections.emptyList() vs. List.of() ๋น„๊ต

๋ฐ•ํฅ์ˆ˜ยท2025๋…„ 11์›” 10์ผ

๐Ÿ” Collections.emptyList() vs. List.of() ๋น„๊ต

ํŠน์ง•Collections.emptyList()List.of()
Java ๋ฒ„์ „Java 1.2๋ถ€ํ„ฐ ์‚ฌ์šฉ ๊ฐ€๋ŠฅJava 9๋ถ€ํ„ฐ ๋„์ž… (JEP 269)
๋ชฉ์ ๋‹จ ํ•˜๋‚˜์˜ ๊ณต์œ ๋œ ์ •์  ๋นˆ ๋ฆฌ์ŠคํŠธ ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฐ˜ํ™˜๋น„์–ด ์žˆ๊ฑฐ๋‚˜ ์š”์†Œ๊ฐ€ ์ฑ„์›Œ์ง„ ๋ถˆ๋ณ€ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑ
๋ถˆ๋ณ€์„ฑ๋ถˆ๋ณ€(Immutable). (์ถ”๊ฐ€/์ œ๊ฑฐ ๋ถˆ๊ฐ€๋Šฅ)๋ถˆ๋ณ€(Immutable). (์ถ”๊ฐ€/์ œ๊ฑฐ ๋ถˆ๊ฐ€๋Šฅ)
null ํ—ˆ์šฉnull ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†์Œ (์–ด์ฐจํ”ผ ๋น„์–ด ์žˆ์Œ)์š”์†Œ๋กœ null์„ ๋„ฃ์œผ๋ ค ํ•˜๋ฉด NullPointerException ๋ฐœ์ƒ
์„ฑ๋Šฅ๋งค์šฐ ๋น ๋ฆ„. ๊ฐ์ฒด๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ด ์—†์Œ.๋น ๋ฆ„. ๋ฆฌ์ŠคํŠธ ๋‚ด๋ถ€ ๊ตฌ์กฐ๊ฐ€ ์ตœ์ ํ™”๋˜์–ด ์žˆ์Œ.

๐Ÿ’ก ์ฃผ์š” ์ฐจ์ด์  ์ƒ์„ธ
1. ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ (๊ฐ€์žฅ ํฐ ์ฐจ์ด)

  • Collections.emptyList()
    ์ด ๋ฉ”์„œ๋“œ๋Š” EMPTY_LIST๋ผ๋Š” ์ด๋ฆ„์˜ ์ •์ (Static)์ด๊ณ  ๊ณ ์ •๋œ(final) ๋‹จ์ผ ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
    ๋”ฐ๋ผ์„œ ์ด ๋ฉ”์„œ๋“œ๋ฅผ ์ˆ˜๋ฐฑ ๋ฒˆ ํ˜ธ์ถœํ•ด๋„ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋Š” ๋‹จ ํ•œ ๋ฒˆ๋„ ์ƒ์„ฑ๋˜์ง€ ์•Š์œผ๋ฉฐ, ํ•ญ์ƒ ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ฐ™์€ ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋™์ผํ•œ ๊ฐ์ฒด๋ฅผ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์„ฑ ์ธก๋ฉด์—์„œ ์ตœ๊ณ ์ž…๋‹ˆ๋‹ค.

  • List.of()
    ์ด ๋ฉ”์„œ๋“œ๋Š” ํ˜ธ์ถœ๋  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ImmutableCollections$ListN ๋˜๋Š” ์ด์™€ ์œ ์‚ฌํ•œ ๋‚ด๋ถ€ ํด๋ž˜์Šค์˜ ์ƒˆ๋กœ์šด ๋ถˆ๋ณ€ ๋ฆฌ์ŠคํŠธ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
    ๋น„์–ด ์žˆ๋Š” ๊ฒฝ์šฐ(List.of())์—๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ๋นˆ ๋ฆฌ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ์ƒˆ๋กœ์šด ์ž‘์€ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

  1. ์„ค๊ณ„ ๋ชฉ์ ๊ณผ ์ฒ ํ•™
  • Collections.emptyList()
    ์ฃผ๋กœ ๋ฐ˜ํ™˜ํ•  ์š”์†Œ๊ฐ€ ์—†์„ ๋•Œ (์˜ˆ: ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๊ฐ€ 0๊ฐœ์ผ ๋•Œ) null ๋Œ€์‹  ๋ฐ˜ํ™˜ํ•˜์—ฌ NullPointerException์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • List.of()
    ์ปฌ๋ ‰์…˜ ๋ฆฌํ„ฐ๋Ÿด(Collection Literal)์„ ๋Œ€์ฒดํ•˜๊ธฐ ์œ„ํ•ด Java 9์—์„œ ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋น„์–ด ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ ์™ธ์—๋„, List.of("A", "B")์ฒ˜๋Ÿผ ์š”์†Œ๋ฅผ ํฌํ•จํ•˜๋Š” ๋ถˆ๋ณ€ ๋ฆฌ์ŠคํŠธ๋ฅผ ์‰ฝ๊ฒŒ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ฃผ ๋ชฉ์ ์ž…๋‹ˆ๋‹ค.

  1. Java ๋ฒ„์ „ ์˜์กด์„ฑ
    ํ”„๋กœ์ ํŠธ์˜ JDK ๋ฒ„์ „์ด Java 9 ๋ฏธ๋งŒ์ด๋ผ๋ฉด List.of()๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ Collections.emptyList()๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
profile
์•ˆ๋…•ํ•˜์„ธ์š”. ์ƒˆ๋กœ์šด ํ•™์Šต์„ ์ข‹์•„ํ•˜๋Š” ๋ฐฑ์•ค๋“œ ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค.

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