All :L

[Java] ์ปฌ๋ ‰์…˜ (Collection) ๋ณธ๋ฌธ

STUDY/Java

[Java] ์ปฌ๋ ‰์…˜ (Collection)

ofijwe 2024. 10. 30. 17:14
๋ฐ˜์‘ํ˜•

๐Ÿ“’ List ๊ณ„์—ด

1๏ธโƒฃ ์ž๋ฃŒ๊ตฌ์กฐ

  • ๋ฐ์ดํ„ฐ ๊ฐ’์˜ ๋ชจ์ž„, ๋˜ ๋ฐ์ดํ„ฐ ๊ฐ„์˜ ๊ด€๊ณ„, ๊ทธ๋ฆฌ๊ณ  ๋ฐ์ดํ„ฐ์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜๋‚˜ ๋ช…๋ น์„ ์˜๋ฏธ

2๏ธโƒฃ ๋ฐฐ์—ด

  • ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ์ž๋ฃŒ ๊ตฌ์กฐ
  • homeogeneous collection : ๋™์ผํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…๋งŒ ๊ด€๋ฆฌ ๊ฐ€๋Šฅ
  • Polymorphism
    • Object๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ชจ๋“  ๊ฐ์ฒด ์ฐธ์กฐ ๊ฐ€๋Šฅ → Collection Framework
    • ๋‹ด์„ ๋• ํŽธ๋ฆฌ, ๋นผ๋‚ผ ๋• Object๋กœ๋งŒ
    • ๋Ÿฐํƒ€์ž„์— ์‹ค์ œ ๊ฐ์ฒด์˜ ํƒ€์ž… ํ™•์ธ ํ›„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€
  • Generic์„ ์ด์šฉํ•œ ํƒ€์ž… ํ•œ์ •
    • ์ปดํŒŒ์ผ ํƒ€์ž„์— ์ €์žฅํ•˜๋ ค๋Š” ํƒ€์ž… ์ œํ•œ → ํ˜•๋ณ€ํ™˜์˜ ๋ฒˆ๊ฑฐ๋กœ์›€ ์ œ๊ฑฐ

3๏ธโƒฃ Collection Framework

  • java.util ํŒจํ‚ค์ง€
    • ๋‹ค์ˆ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ• ์ œ๊ณต → DB์ฒ˜๋Ÿผ CRUD ๊ธฐ๋Šฅ ์ค‘์š”
  • Collection framework ํ•ต์‹ฌ interface
    • List : ์ž…๋ ฅ ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ
    • Set : ์ž…๋ ฅ ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ
    • Map : key์™€ value์˜ ์Œ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ง‘ํ•ฉ
  • Collection interface (CRUD)

4๏ธโƒฃ Collection Framework - List

  • ํŠน์ง•
    • ์ž…๋ ฅ ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ
    • ์ž…๋ ฅ ์ˆœ์„œ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต ํ—ˆ๋ฝ
  • ๋ฐฐ์—ด๊ณผ ArrayList
    • ์žฅ์ 
      • ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ํ˜•ํƒœ์˜ ์ž๋ฃŒ ๊ตฌ์กฐ๋กœ ๊ฐ„๋‹จํ•˜๋ฉฐ ์‚ฌ์šฉ์ด ์‰ฌ์›€
      • ์ ‘๊ทผ ์†๋„๊ฐ€ ๋น ๋ฆ„
    • ๋‹จ์ 
      • ํฌ๊ธฐ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ X, ์ถ”๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์œ„ํ•ด ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋งŒ๋“ค๊ณ  ๋ณต์‚ฌํ•ด์•ผ ํ•จ
      • ๋น„ ์ˆœ์ฐจ์  ๋ฐ์ดํ„ฐ์˜ ์ถ”๊ฐ€, ์‚ญ์ œ์— ๋งŽ์€ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆผ
  • LinkedList
    • ๊ฐ ์š”์†Œ๋ฅผ Node๋กœ ์ •์˜ํ•˜๊ณ  Node๋Š” ๋‹ค์Œ ์š”์†Œ์˜ ์ฐธ์กฐ ๊ฐ’๊ณผ ๋ฐ์ดํ„ฐ๋กœ ๊ตฌ์„ฑ๋จ
    • ๊ฐ ์š”์†Œ๊ฐ€ ๋‹ค์Œ ์š”์†Œ์˜ ๋งํฌ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๋ฉฐ ์—ฐ์†์ ์œผ๋กœ ๊ตฌ์„ฑ๋  ํ•„์š” X
  • ๊ฒฐ๋ก 
    • ํŠน์ • ํด๋ž˜์Šค๊ฐ€ ์ข‹๊ณ  ๋‚˜์จ์ด ๋‚˜๋‹Œ ์šฉ๋„์— ์ ํ•ฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•ด์•ผ ํ•จ
    • ์†Œ๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ํฐ ์ฐจ์ด X
    • ์ •์ ์ธ ๋ฐ์ดํ„ฐ ํ™œ์šฉ, ๋‹จ์ˆœํ•œ ๋ฐ์ดํ„ฐ ์กฐํšŒ → ArrayList
    • ๋™์ ์ธ ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€, ์‚ญ์ œ๊ฐ€ ๋งŽ์€ ์ž‘์—… → LinkedList
  • ์ž๋ฃŒ ์‚ญ์ œ ์‹œ ์ฃผ์˜์‚ฌํ•ญ
    • index๋ฅผ ์ด์šฉํ•œ for๋ฌธ
      • ์š”์†Œ๊ฐ€ ์‚ญ์ œ๋˜๋ฉด size๊ฐ€ ์ค„์–ด๋“ค๊ธฐ ๋•Œ๋ฌธ์— index ์ฐจ๊ฐ ํ•„์š”
      • ๊ฑฐ๊พธ๋กœ ์ ‘๊ทผํ•˜๋ฉด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํ•ด๊ฒฐ
    • forEach ๋ฌธ์žฅ์€ Collection ํฌ๊ธฐ๊ฐ€ ๋ถˆ๋ณ€ํ•ด์•ผํ•จ.

๐Ÿ“’ Set ๊ณ„์—ด

1๏ธโƒฃ Set interface

  • ์ž…๋ ฅ ์ˆœ์„œ ๊ด€๋ฆฌ X, ์ฃผ๋จธ๋‹ˆ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๋Š” ํ˜•ํƒœ
  • ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ๋ณ„ํ•  ์ˆœ์„œ X, ์ค‘๋ณต ํ—ˆ์šฉ X

๐Ÿ“’ Map ๊ณ„์—ด

1๏ธโƒฃ Map interface

  • Key์™€ Value๋ฅผ ํ•˜๋‚˜์˜ Entry๋กœ ๋ฌถ์–ด์„œ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ
    • Key : Object ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ ์ค‘๋ณต์„ ํ—ˆ๋ฝ X
    • Value : Object ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ ์ค‘๋ณต ํ—ˆ๋ฝ O

๐Ÿ“’ ์ •๋ ฌ

1๏ธโƒฃ ์ •๋ ฌ

  • ์š”์†Œ๋ฅผ ํŠน์ • ๊ธฐ์ค€์— ๋Œ€ํ•œ ๋‚ด๋ฆผ์ฐจ์ˆœ ๋˜๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ๋ฐฐ์น˜ํ•˜๋Š” ๊ฒƒ
  • ํฌ๊ธฐ๋ฅผ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋Š” ์š”์†Œ๋ฅผ ๊ฐ€์ง€๋Š” Colection๋“ค๋งŒ ์ •๋ ฌ ๊ฐ€๋Šฅ
    • List ๊ณ„์—ด
    • Set์—์„œ๋Š” SortedSet์˜ ์ž์‹ ๊ฐ์ฒด
    • Map์—์„œ๋Š” SortedMap์˜ ์ž์‹ ๊ฐ์ฒด(key ๊ธฐ์ค€)
  • Collections์˜ sort()๋ฅผ ์ด์šฉํ•œ ์ •๋ ฌ
    • sort(List<T> list)

2๏ธโƒฃ Comparator์˜ ํ™œ์šฉ

  • ๊ฐ์ฒด๊ฐ€ Comparable์„ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์ง€ ์•Š๊ฑฐ๋‚˜ ์‚ฌ์šฉ์ž ์ •์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์ •๋ ฌํ•˜๋ ค๋Š” ๊ฒฝ์šฐ
  • sort(List<T> list, Comparator<? Super T> c)
  • public interface Comparator<T> { int compare(T o1, T o2); } public class StringLengthComparator implements Comparator<String> { @Override public int compare(String o1, String o2) { int len1 = o1.length(); int len2 = o2.length(); return Integer.compare(len1, len2); } } public void StringLengthSort() { Collections.sort(names, new StringLengthComparator()); System.out.println(names); }
  • 1ํšŒ์„ฑ ๊ฐ์ฒด ์‚ฌ์šฉ ์‹œ anonymous inner class ์‚ฌ์šฉ
    • ํด๋ž˜์Šค ์ •์˜, ๊ฐ์ฒด ์ƒ์„ฑ ํ•œ ๋ฒˆ์— ์ฒ˜๋ฆฌ
    • Collections.sort(names, new StringLengthComparator()); Collections.sort(names, new Comparator<String>() { @Override public int compare(String o1, String o2) { return Integer.compare(o1.length(), o2.length()); } });
    • ๋žŒ๋‹ค ํ‘œํ˜„์‹ ์ด์šฉ
    • Collections.sort(names, (o1, o2) -> { return Integer.compare(o1.length(), o2.length()); });

๐Ÿ“’ Lambda ํ‘œํ˜„์‹

1๏ธโƒฃ Lambda ์‹

  • ํ•จ์ˆ˜์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํ˜•ํƒœ๋กœ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ ๋ธ”๋ก
  • ๊ธฐ์กด์˜ anonymous inner class๋ฅผ ์ด์šฉํ•œ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์„ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ฒ˜๋ฆฌ

2๏ธโƒฃ Lambda ํ‘œํ˜„์‹

  • ํƒ€๊ฒŸ ํƒ€์ž… ๋˜๋Š” ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค
    • Lambda ์‹์ด ํ• ๋‹น๋˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ Lambda ์‹์˜ ํƒ€๊ฒŸ ํƒ€์ž…์ด๋ผ ํ•จ.
    • ํƒ€๊ฒŸ ํƒ€์ž…์€ abstract ๋ฉ”์„œ๋“œ๊ฐ€ ๋ฐ˜๋“œ์‹œ ํ•˜๋‚˜๋งŒ ์กด์žฌํ•ด์•ผ ํ•จ(default, static ๋“ฑ ๋ฌด๊ด€)
  • @FunctionalInterface
    • ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํ•˜๋‚˜์˜ abstract method๋งŒ ์žˆ์Œ์„ ์ฒดํฌ
    • ๊ทธ๋ ‡์ง€ ์•Š์„ ๊ฒฝ์šฐ ์˜ค๋ฅ˜ ๋ฐœ์ƒ → ์•ˆ์ •์ ์ธ programming์„ ์œ„ํ•œ option
  • abstract method๊ฐ€ 2๊ฐœ ์ด์ƒ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ์—ฌ์ „ํžˆ ์ต๋ช…์˜ inner class ์‚ฌ์šฉ
  • ๊ธฐ๋ณธ Lambda ์‹ : @FunctionalInterface์— ๋Œ€ํ•œ ๊ตฌํ˜„์ฒด ์ž‘์„ฑ๋ฒ•
    • (type variable_name[,…]) → {์‹คํ–‰๋ฌธ;};

3๏ธโƒฃ Lambda ์‹คํ–‰ ๋ธ”๋ก์—์„œ์˜ ๋ณ€์ˆ˜ ์ฐธ์กฐ

  • Lambda ์‹ ๋‚ด๋ถ€์—์„œ์˜ this๋Š” ์™ธ๋ถ€ ํด๋ž˜์Šค์˜ instacne
    • ์™ธ๋ถ€ ํด๋ž˜์Šค์˜ member ๋ณ€์ˆ˜ : ์ ‘๊ทผ์ œํ•œ์ž์˜ ์ œ์•ฝ ์—†์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅ
    • ์™ธ๋ถ€ ๋ฉ”์„œ๋“œ์˜ local ๋ณ€์ˆ˜ : final ํ‚ค์›Œ๋“œ๊ฐ€ ์ถ”๊ฐ€๋œ ๊ฒƒ์œผ๋กœ ๋™์ž‘ → read only

4๏ธโƒฃ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ

  • java.util.function package
    • ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ์ฒด์ง€ํ–ฅ์˜ java ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ๋ฉ”์„œ๋“œ์˜ ๊ตฌ์กฐ์™€ ์ด๋ฆ„์ด ์ค‘์š”
    • ์ผ๋ฐ˜์ ์ธ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ํ•จ์ˆ˜์˜ ํƒ€์ž…์€ ๊ตฌ์กฐ์ ์ด๋ฉฐ ์ด๋ฆ„์ด ๋ถˆํ•„์š”

5๏ธโƒฃ ํ‘œ์ค€ API

  • ๊ธฐ๋ณธ ์ œ๊ณต API ์ข…๋ฅ˜
    • ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ํ•จ์ˆ˜์  ํ‘œ์ค€ interface๋ฅผ java.util.function package์— ์ •์˜
    • ์ฃผ๋กœ ๋ฉ”์„œ๋“œ ๋˜๋Š” ์ƒ์„ฑ์ž์˜ parameter๋กœ Lambda์‹์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•จ
  • Consumer ๊ณ„์—ด
    • parameter๋Š” ์žˆ์œผ๋ฉฐ return์ด ์—†๋Š” ํ˜•ํƒœ
    • parameter ํƒ€์ž…์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•œ consumer ์กด์žฌ
  • Supplier ๊ณ„์—ด
    • parameter๋Š” ์—†์œผ๋ฉฐ return์ด ์žˆ๋Š” ํ˜•ํƒœ
    • retrun ํƒ€์ž…์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•œ supplier ์กด์žฌ
  • Function ๊ณ„์—ด
    • parameter์™€ return ๊ฐ’์ด ์žˆ๋Š” ํ˜•ํƒœ
    • parameter์™€ return type์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•œ ์ธํ„ฐํŽ˜์ด์Šค ์กด์žฌ
    • ์ฃผ๋กœ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ด์šฉํ•ด ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ ํ›„ ์›ํ•˜๋Š” ํƒ€์ž…์œผ๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ์—ญํ• 
  • Operator ๊ณ„์—ด
    • function ๊ณ„์—ด๊ณผ ์œ ์‚ฌ: parameter์™€ return ๊ฐ’์„ ๊ฐ€์ง
  • Predicate ๊ณ„์—ด
    • parameter๋ฅผ ๋ฐ›๊ณ  boolean ํƒ€์ž…์„ ๋ฆฌํ„ด

6๏ธโƒฃ ๋ฉ”์„œ๋“œ ์ฐธ์กฐ์™€ ์ƒ์„ฑ์ž ์ฐธ์กฐ

  • ๋žŒ๋‹ค ์‹คํ–‰๋ฌธ ๋‚ด๋ถ€์—์„œ ๋‹ค๋ฅธ ํ•จ์ˆ˜ ํ•˜๋‚˜๋งŒ์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒจ์šฐ :: ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•ด ๊ธฐ์กด ๋ฉ”์„œ๋“œ ์ฐธ์กฐ
    • <์†Œ์œ ์ž>::<ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์†Œ์œ ์ž์˜ ๋ฉ”์„œ๋“œ>
  • ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ ์ฐธ์กฐ
    • ๊ฐ์ฒด์˜ ํด๋ž˜์Šค :: ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ
    • ์ฒซ ๋ฒˆ์žฌ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ๋ฉ”์„œ๋“œ์˜ ์†Œ์œ ์ž
    • ๋‚˜๋จธ์ง€ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ๋ฉ”์„œ๋“œ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ์ „๋‹ฌ
  • ์ •์  ๋ฉ”์„œ๋“œ ์ฐธ์กฐ
    • ํด๋ž˜์Šค::์ •์  ๋ฉ”์„œ๋“œ
    • ๋ชจ๋“  ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ๋ฉ”์„œ๋“œ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ˆœ์„œ๋Œ€๋กœ ์ „๋‹ฌ๋จ
  • ํŠน์ • ๊ฐ์ฒด์˜ instance์˜ ๋ฉ”์„œ๋“œ ์ฐธ์กฐ
    • ๊ฐ์ฒด :: ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ ํ˜•ํƒœ
    • ๊ฐ์ฒด์˜ ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉฐ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ๋ฉ”์„œ๋“œ์— ๊ทธ๋Œ€๋กœ ์ „๋‹ฌ๋จ
  • ์ƒ์„ฑ์ž ์ฐธ์กฐ
    • ํด๋ž˜์Šค๋ช… :: new์˜ ํ˜•์‹์œผ๋กœ ์ƒ์„ฑ์ž ์ฐธ์กฐ
    • ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ๊ฐœ์ˆ˜, ํƒ€์ž…์— ์˜ํ•ด ํ˜ธ์ถœ๋˜๋Š” ์ƒ์„ฑ์ž ๊ฒฐ์ •

๐Ÿ“’ Stream API

1๏ธโƒฃ Stream

  • JDK 8์— ์ถ”๊ฐ€๋œ java.util.stream package
  • ๋ฐฐ์—ด ๋ฐ Collection์˜ ์š”์†Œ๋ฅผ ํ•˜๋‚˜์”ฉ ์ฐธ์กฐํ•ด์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ชฉ์ 
    • ๋žŒ๋‹ค์™€ ๋‚ด๋ถ€ ๋ฐ˜๋ณต์ž๋ฅผ ์ด์šฉํ•ด ์ปฌ๋ ‰์…˜์„ ๋‹ค๋ฃจ๋Š” ์ฝ”๋“œ ๊ฐ„๊ฒฐํ™”
  • Stream API ์—ญํ•  ๋ฐ ํŠน์ง•
    • ์ปฌ๋ ‰์…˜, ๋ฐฐ์—ด ๋“ฑ ๋ฐ์ดํ„ฐ ์†Œ์Šค์— ๋Œ€ํ•œ ๊ณตํ†ต๋œ ์ ‘๊ทผ ๋ฐฉ์‹ ์ œ๊ณต
    • ์†์‰ฌ์šด ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ

2๏ธโƒฃ Stream ์ž๋ฃŒ ์ฒ˜๋ฆฌ

  • ๋งต/๋ฆฌ๋“€์Šค ๋ชจ๋ธ ์ง€์›
    • ๋งต: ๋ฐ์ดํ„ฐ๋ฅผ ์ž‘์€ ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„์–ด ์ฒ˜๋ฆฌ
    • ๋ฆฌ๋“€์Šค: ๊ฒฐ๊ณผ๋ฅผ ๋ชจ์•„์„œ ์ตœ์ข… ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑ
    • ์ค‘๊ฐ„ ์ฒ˜๋ฆฌ๋“ค๊ณผ ์ตœ์ข… ์ฒ˜๋ฆฌ๋ฅผ ์กฐํ•ฉํ•ด ์‚ฌ์šฉ
      • ์ค‘๊ฐ„ ์ฒ˜๋ฆฌ: ๋งคํ•‘, ํ•„ํ„ฐ๋ง, ์ •๋ ฌ ๋“ฑ ๊ฐ€๊ณต ์ฒ˜๋ฆฌ
      • ์ตœ์ข… ์ฒ˜๋ฆฌ: ๋ฐ˜๋ณต, ์นด์šดํŒ…, ํ‰๊ท , ์ดํ•ฉ ๋“ฑ ์ง‘๊ณ„ ์ฒ˜๋ฆฌ
    • ๊ฐ๊ฐ์˜ ์ค‘๊ฐ„ ์ฒ˜๋ฆฌ๋Š” ์ƒˆ๋กœ์šด ์ŠคํŠธ๋ฆผ์„ ๋ฆฌํ„ดํ•˜์—ฌ builder ํŒจํ„ด ์ ์šฉ
      • ๊ธฐ์กด ์ŠคํŠธ๋ฆผ์˜ ๋‚ด์šฉ์„ ์ˆ˜์ •ํ•˜์ง€ ์•Š์Œ
    • ์ตœ์ข… ์ฒ˜๋ฆฌ๋Š” ์ตœ์ข…์ ์œผ๋กœ ์›ํ•˜๋Š” ๊ฐ’์„ ๋ฐ˜ํ™˜ → ํ•œ๋ฒˆ ์ตœ์ข… ์ฒ˜๋ฆฌ ๋๋‚œ ์ŠคํŠธ๋ฆผ ์žฌ์‚ฌ์šฉ X
  • Stream์˜ ์ข…๋ฅ˜์™€ ํš๋“
    • java.util.stream package์— ์ •์˜
    • ์ข…๋ฅ˜
      • Stream - ๊ฐ์ฒด ์š”์†Œ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ
      • IntStream, LongStream, DoubleStream - ๊ฐ๊ฐ int, long, double ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ
    • ํš๋“
      • Collection, ๋ฐฐ์—ด, File, Random ๋ฐ Stream ํด๋ž˜์Šค์˜ static method๋กœ ์ƒ์„ฑ

3๏ธโƒฃ ์ค‘๊ฐ„ ์ฒ˜๋ฆฌ

  • ํ•„ํ„ฐ๋ง
  • ์ž๋ฅด๊ธฐ
  • ์ •๋ ฌ
  • ๋งคํ•‘(๋ณ€ํ™˜) - ์ŠคํŠธ๋ฆผ์˜ ์š”์†Œ๋ฅผ ๋‹ค๋ฅธ ์š”์†Œ๋กœ ๋Œ€์ฒดํ•˜๋Š” ์ž‘์—…
  • ์กฐํšŒ(์ฃผ์„)

4๏ธโƒฃ ์ตœ์ข… ์ฒ˜๋ฆฌ

  • ๋ฐ˜๋ณต - forEach()
  • ๋งค์นญ
  • ํ†ต๊ณ„ - count(), sum() …
  • ์ง‘๊ณ„(aggregate)
  • ์‚ฌ์šฉ์ž ์ •์˜ ์ง‘๊ณ„ ์ฒ˜๋ฆฌ - reduce()
  • ์กฐ์‚ฌ - findFirst(), findAny()
  • ๊ฒฐ๊ณผ ๋ชจ์œผ๊ธฐ - collect()
  • ๊ฒฐ๊ณผ ๋ชจ์œผ๊ธฐ - ๋ถ„ํ• (partioningBy())๊ณผ ๊ทธ๋ฃนํ•‘(groupingBy())
๋ฐ˜์‘ํ˜•

'STUDY > Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Java] ํŒŒ์ผ ์ž…์ถœ๋ ฅ (File/IO)  (0) 2024.11.03
[Java] ์˜ˆ์™ธ (Exception)  (0) 2024.11.01
[Java] ์ œ๋„ค๋ฆญ (Generic)  (2) 2024.10.28
[Java] ์ธํ„ฐํŽ˜์ด์Šค (Interface)  (0) 2024.10.26
[Java] ๋‹คํ˜•์„ฑ (Polymorphism)  (0) 2024.10.24
Comments