JAVA ์ปฌ๋ ‰์…˜ ์ž๋ฃŒ๊ตฌ์กฐ

2026. 2. 11. 16:22ยท๐Ÿ‘ฉ‍๐Ÿ’ปDeveloper ๐Ÿ’ก/๐Ÿ’พBack-end๐Ÿ•Š๏ธ

 

 

 

์ปฌ๋ ‰์…˜ ์ž๋ฃŒ๊ตฌ์กฐ

 

 

Java ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ ํ•ต์‹ฌ ์ •๋ฆฌ (ArrayList vs HashSet + Iterator + equals/hashCode)

0) ์ปฌ๋ ‰์…˜์ด ์™œ ํ•„์š”ํ•ด?

์ž๋ฐ”์—์„œ “์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ์ฒด”๋ฅผ ๋‹ด๋Š” ๋ฐฉ๋ฒ•์€ ํฌ๊ฒŒ 2๊ฐ€์ง€๊ฐ€ ์žˆ์–ด:

  • ๋ฐฐ์—ด(Array): ํฌ๊ธฐ ๊ณ ์ •, ๊ธฐ๋Šฅ ์ ์Œ
  • ์ปฌ๋ ‰์…˜(Collection Framework): ํฌ๊ธฐ ๊ฐ€๋ณ€, ๊ธฐ๋Šฅ ํ’๋ถ€(์ถ”๊ฐ€/์‚ญ์ œ/๊ฒ€์ƒ‰/์ค‘๋ณต์ฒ˜๋ฆฌ/์ •๋ ฌ ๋“ฑ)

์ปฌ๋ ‰์…˜์˜ ๋Œ€ํ‘œ ๋ผ์ธ:

  • List: ์ˆœ์„œ O, ์ค‘๋ณต O → ๋Œ€ํ‘œ: ArrayList
  • Set: ์ˆœ์„œ X(๋ณด์žฅ ์•ˆ ํ•จ), ์ค‘๋ณต X → ๋Œ€ํ‘œ: HashSet

1) List ์ธํ„ฐํŽ˜์ด์Šค & ArrayList

1-1. ArrayList ํŠน์ง•

  • ์ €์žฅ ์ˆœ์„œ๊ฐ€ ์œ ์ง€๋จ
  • ์ค‘๋ณต ์ €์žฅ ๊ฐ€๋Šฅ
  • get(i)์ฒ˜๋Ÿผ ์ธ๋ฑ์Šค๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅ
  • ๋Œ€์‹  ์ค‘๊ฐ„ ์‚ฝ์ž…/์‚ญ์ œ๊ฐ€ ๋งŽ์œผ๋ฉด ๋А๋ ค์งˆ ์ˆ˜ ์žˆ์Œ(๋’ค ์š”์†Œ๋“ค์ด ๋‹น๊ฒจ์ง€๊ฑฐ๋‚˜ ๋ฐ€๋ฆผ)

2) ํšŒ์›๊ด€๋ฆฌ ์˜ˆ์ œ: MemberArrayList

2-1. ํ•„๋“œ์™€ ์ƒ์„ฑ์ž

ํ•œ ์ค„์”ฉ ์‰ฝ๊ฒŒ ํ•ด์„ค

  • private ArrayList<Member> arrayList;
    → “Member ๊ฐ์ฒด๋“ค์„ ๋‹ด์„ ‘๋ฐ•์Šค(๋ฆฌ์ŠคํŠธ)’๋ฅผ ์ค€๋น„ํ•ด๋‘˜๊ฒŒ”
  • arrayList = new ArrayList<Member>();
    → “๋ฐ•์Šค๋ฅผ ์‹ค์ œ๋กœ ๋งŒ๋“ ๋‹ค(๋ฉ”๋ชจ๋ฆฌ์— ์ƒ์„ฑ)”

2-2. ํšŒ์› ์ถ”๊ฐ€: addMember()

2-3. ์ „์ฒด ํšŒ์› ์ถœ๋ ฅ: showAllMember() + ํ–ฅ์ƒ๋œ for๋ฌธ

 

์ค‘์š” ํฌ์ธํŠธ

  • for (Member member : arrayList) ๋Š” ํ–ฅ์ƒ๋œ for๋ฌธ(= for-each)
    → “๋ฆฌ์ŠคํŠธ์˜ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด์„œ member ๋ณ€์ˆ˜์— ๋‹ด์•„ ๋ฐ˜๋ณต”
  • System.out.println(member)
    → ์—ฌ๊ธฐ์„œ member๋Š” ๊ฐ์ฒด๋‹ˆ๊นŒ, ๋‚ด๋ถ€์ ์œผ๋กœ member.toString()์ด ํ˜ธ์ถœ๋จ
    → ๊ทธ๋ž˜์„œ Member ํด๋ž˜์Šค์˜ toString() ๊ตฌํ˜„์ด ์ถœ๋ ฅ ๋ชจ์–‘์„ ๊ฒฐ์ •ํ•ด.

โœ… ํ–ฅ์ƒ๋œ for๋ฌธ ๋ฌธ๋ฒ•

 
for (ํƒ€์ž… ๋ณ€์ˆ˜ : ์ปฌ๋ ‰์…˜/๋ฐฐ์—ด) {
// ๋ฐ˜๋ณต ์‹คํ–‰๋ฌธ
}

 

โš ๏ธ ์ฃผ์˜: ํ–ฅ์ƒ๋œ for๋ฌธ ๋Œ๋ฉด์„œ add/remove๋กœ ์ปฌ๋ ‰์…˜์„ ์ˆ˜์ •ํ•˜๋ฉด ๋ณดํ†ต ์œ„ํ—˜(์•„๋ž˜ Iterator์—์„œ ์„ค๋ช…)

 

2-4. ํšŒ์› ์‚ญ์ œ: removeMember(int memberId) (์ธ๋ฑ์Šค ๊ธฐ๋ฐ˜)

์Šค์ƒท์— ๋‚˜์˜จ ํ˜•ํƒœ๋Š” ์ด๊ฑฐ์•ผ:

 

ํ•œ ์ค„์”ฉ ํ•ต์‹ฌ๋งŒ “์™œ?” ์ค‘์‹ฌ์œผ๋กœ ํ•ด์„ค

  • for (int i=0; i<arrayList.size(); i++)
    → ArrayList๋Š” ์ˆœ์„œ/์ธ๋ฑ์Šค๊ฐ€ ์žˆ์œผ๋‹ˆ๊นŒ 0๋ฒˆ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ํ›‘์–ด์„œ ์ฐพ๋Š” ๋ฐฉ์‹
  • arrayList.get(i)
    → i๋ฒˆ์งธ ํšŒ์› ๊บผ๋ƒ„
  • if (tempId == memberId)
    → “์ฐพ๋Š” id๋ฉด”
  • arrayList.remove(i)
    → i๋ฒˆ์งธ ์š”์†Œ ์‚ญ์ œ (์‚ญ์ œ๋˜๋ฉด ๋’ค๊ฐ€ ํ•œ ์นธ์”ฉ ๋‹น๊ฒจ์ง)
  • return true
    → “์‚ญ์ œ ์„ฑ๊ณต”์„ ์ฆ‰์‹œ ์ข…๋ฃŒ๋กœ ์•Œ๋ ค์คŒ
  • ๋๊นŒ์ง€ ๋ชป ์ฐพ์œผ๋ฉด ์•ˆ๋‚ด๋ฌธ ์ถœ๋ ฅ ํ›„ false

2-5. (๊ณผ์ œ) ํŠน์ • ์œ„์น˜์— ํšŒ์› ์ถ”๊ฐ€: insertMember(member, index)

์Šค์ƒท ํžŒํŠธ: public void insertMember(Member member, int index)

ArrayList๋Š” ์ด๋ฏธ ๊ธฐ๋Šฅ์ด ์žˆ์–ด:

 

add(index, element) → ํ•ด๋‹น ์œ„์น˜์— ๋ผ์›Œ๋„ฃ๊ณ , ๋’ค ์š”์†Œ๋“ค์€ ํ•œ ์นธ์”ฉ ๋ฐ€๋ฆผ

 

3) ArrayList ํ…Œ์ŠคํŠธ ์ฝ”๋“œ: MemberArrayListTest

  • ํšŒ์› ์ƒ์„ฑ → ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ → ์ „์ฒด ์ถœ๋ ฅ → ํ•œ ๋ช… ์‚ญ์ œ → ๋‹ค์‹œ ์ถœ๋ ฅ” ํ๋ฆ„ ๊ฒ€์ฆ์šฉ

4) Set ์ธํ„ฐํŽ˜์ด์Šค & HashSet

4-1. HashSet ํŠน์ง•

  • ์ค‘๋ณต ๋ถˆ๊ฐ€
  • ์ˆœ์„œ ๋ณด์žฅ ์•ˆ ๋จ (์ถœ๋ ฅ ์ˆœ์„œ๊ฐ€ ๋งค๋ฒˆ ๊ฐ™์„ ํ•„์š” ์—†์Œ)
  • ๋‚ด๋ถ€์ ์œผ๋กœ “ํ•ด์‹œ(hash)” ๊ตฌ์กฐ๋ฅผ ํ™œ์šฉํ•ด์„œ ํ‰๊ท ์ ์œผ๋กœ ๋น ๋ฆ„

4-2. ๋ฌธ์ž์—ด HashSet ์˜ˆ์ œ (์ค‘๋ณต ์ž๋™ ์ œ๊ฑฐ)

์™œ "์†Œ์ค€ํ˜•"์ด ํ•œ ๋ฒˆ๋งŒ ๋‚จ์„๊นŒ?

  • String์€ ์ด๋ฏธ equals()์™€ hashCode()๊ฐ€ “๋ฌธ์ž์—ด ๋‚ด์šฉ ๊ธฐ์ค€”์œผ๋กœ ์ž˜ ๊ตฌํ˜„๋˜์–ด ์žˆ์Œ
  • ๊ทธ๋ž˜์„œ HashSet์ด “๊ฐ™์€ ๊ฐ’”์œผ๋กœ ํŒ๋‹จํ•˜๊ณ  ์ค‘๋ณต ์‚ฝ์ž…์„ ๋ง‰์Œ

5) ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐ์ฒด๋ฅผ HashSet์— ๋„ฃ์„ ๋•Œ ํ•ต์‹ฌ: equals() + hashCode()

5-1. HashSet์ด ์ค‘๋ณต์„ ํŒ๋‹จํ•˜๋Š” ๋ฐฉ์‹ (์ง„์งœ ์ค‘์š”)

HashSet์€ ์ƒˆ ๊ฐ์ฒด๋ฅผ ๋„ฃ์„ ๋•Œ ๋Œ€์ถฉ ์ด๋Ÿฐ ์ˆœ์„œ๋กœ ๊ฒ€์‚ฌํ•ด:

  1. hashCode()๋กœ “๋“ค์–ด๊ฐˆ ์นธ(๋ฒ„ํ‚ท)”์„ ๋จผ์ € ์ฐพ๊ณ 
  2. ๊ฐ™์€ ์นธ์— ์ด๋ฏธ ๋ˆ„๊ฐ€ ์žˆ์œผ๋ฉด equals()๋กœ “์ง„์งœ ๊ฐ™์€์ง€” ์ตœ์ข… ๋น„๊ต

โœ… ๋”ฐ๋ผ์„œ ๊ทœ์น™:

  • equals๋ฅผ ์žฌ์ •์˜ํ•˜๋ฉด hashCode๋„ ๋ฐ˜๋“œ์‹œ ๊ฐ™์ด ์žฌ์ •์˜ํ•ด์•ผ ํ•จ
  • (๋‘˜์ด ๊ธฐ์ค€์ด ๋‹ค๋ฅด๋ฉด HashSet์—์„œ ์ค‘๋ณต์ด ๋šซ๋ฆฌ๊ฑฐ๋‚˜ ๊ฒ€์ƒ‰์ด ์‹คํŒจํ•  ์ˆ˜ ์žˆ์Œ)

5-2. Member ํด๋ž˜์Šค ์˜ˆ์‹œ (์Šค์ƒท ๋‚ด์šฉ)

ํ•œ ์ค„์”ฉ ๊ฐ ์žก๊ธฐ

  • hashCode()๋Š” “๋น ๋ฅธ ๋ถ„๋ฅ˜์šฉ ๋ฒˆํ˜ธํ‘œ”
    • ์—ฌ๊ธฐ์„  memberId๊ฐ€ ๊ณง “ํšŒ์›์˜ ๊ณ ์œ  ์‹๋ณ„์ž”๋‹ˆ๊นŒ ๊ทธ๋Œ€๋กœ ๋ฐ˜ํ™˜
  • equals(Object obj)์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ Object์ธ ์ด์œ 
    • ์ž๋ฐ”์˜ ๋ชจ๋“  ํด๋ž˜์Šค๊ฐ€ Object์˜ equals๋ฅผ “์˜ค๋ฒ„๋ผ์ด๋“œ”ํ•˜๋Š” ๊ตฌ์กฐ๋ผ์„œ ์‹œ๊ทธ๋‹ˆ์ฒ˜๊ฐ€ ๊ณ ์ •
  • instanceof Member๋กœ ํƒ€์ž… ํ™•์ธ ํ›„ ์บ์ŠคํŒ…
    • ์•ˆ์ „ํ•˜๊ฒŒ Member๋ผ๋ฆฌ๋งŒ ๋น„๊ตํ•˜๋ ค๊ณ 
  • memberId๊ฐ€ ๊ฐ™์œผ๋ฉด ๊ฐ™์€ ํšŒ์›(true)
    • ์ฆ‰, ์ด๋ฆ„์ด ๋‹ฌ๋ผ๋„ id๋งŒ ๊ฐ™์œผ๋ฉด “๊ฐ™์€ ํšŒ์›”์œผ๋กœ ์ทจ๊ธ‰

6) HashSet์œผ๋กœ ํšŒ์›๊ด€๋ฆฌ: MemberHashSet

์Šค์ƒท ํ๋ฆ„: HashSet<Member>๋กœ ๊ด€๋ฆฌํ•˜๋‹ˆ๊นŒ “์ค‘๋ณต ํšŒ์› id”๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ๋ง‰ํžˆ๊ฒŒ ๋งŒ๋“ค๊ณ  ์‹ถ์€ ๊ฑฐ์•ผ.

6-1. ๊ธฐ๋ณธ ๊ตฌ์กฐ

6-2. ์‚ญ์ œ๊ฐ€ ์™œ Iterator๋กœ ๋ฐ”๋€Œ๋‚˜?

Set(ํŠนํžˆ HashSet)์€ ์ธ๋ฑ์Šค๊ฐ€ ์—†์–ด → get(i) ๊ฐ™์€ ๊ฒŒ ์—†์Œ
๊ทธ๋ž˜์„œ “์ „์ฒด๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ์กฐ๊ฑด์„ ์ฐพ๋Š” ๋ฐฉ์‹”์ด ํ•„์š”ํ•จ.

๊ทธ๋•Œ ์“ฐ๋Š” ๋„๊ตฌ๊ฐ€ Iterator(๋ฐ˜๋ณต์ž)

โœ… Iterator ํ•ต์‹ฌ 3๊ฐœ:

  • hasNext() : ๋‹ค์Œ ์š”์†Œ ์žˆ๋ƒ?
  • next() : ๋‹ค์Œ ์š”์†Œ ํ•˜๋‚˜ ๊บผ๋‚ด๋ผ
  • remove() : “๋ฐฉ๊ธˆ next()๋กœ ๊บผ๋‚ธ ๊ทธ ์š”์†Œ”๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์‚ญ์ œ

6-3. removeMember(Iterator ๋ฒ„์ „) — ์•ˆ์ „ํ•œ ์ •์„ ์ฝ”๋“œ

์Šค์ƒท์—๋Š” hashSet.remove(member) ํ˜•ํƒœ๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ, ์‹ค๋ฌด/์ •์„์€ **iterator.remove()**๊ฐ€ ๋” ์•ˆ์ „ํ•ด.
(์ปฌ๋ ‰์…˜์„ ์ˆœํšŒ ์ค‘์— ์ปฌ๋ ‰์…˜์„ ์ง์ ‘ ์ˆ˜์ •ํ•˜๋ฉด ConcurrentModificationException ์œ„ํ—˜์ด ์žˆ์–ด์„œ)

7) HashSet ํ…Œ์ŠคํŠธ: “id ์ค‘๋ณต์ด๋ฉด ์ถ”๊ฐ€๊ฐ€ ์•ˆ ๋ผ์•ผ ํ•œ๋‹ค”

  • equals/hashCode๋ฅผ memberId ๊ธฐ์ค€์œผ๋กœ ํ•ด๋†จ์œผ๋ฉด,
    • 1003์€ ์ด๋ฏธ ์กด์žฌ → ๋‘ ๋ฒˆ์งธ ์ถ”๊ฐ€๋Š” ์‹คํŒจ(์ค‘๋ณต์œผ๋กœ ํŒ๋‹จ)

โš ๏ธ ๊ทธ๋ฆฌ๊ณ  HashSet์€ ์ˆœ์„œ๊ฐ€ ๋ณด์žฅ๋˜์ง€ ์•Š์•„์„œ ์ถœ๋ ฅ ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€” ์ˆ˜ ์žˆ์Œ
“์ž…๋ ฅํ•œ ์ˆœ์„œ๋Œ€๋กœ ์ถœ๋ ฅ”์ด ๋ชฉํ‘œ๋ฉด → LinkedHashSet์„ ์จ์•ผ ํ•ด.


8) ์‹ค์Šต ๋ฌธ์ œ: StudentTest (HashSet<Student>)

์Šค์ƒท ์š”๊ตฌ์‚ฌํ•ญ:

  • new Student("100","์ฐจ์€์žฌ")
  • new Student("100","์œค์•„๋ฆ„")
    → ํ•™๋ฒˆ์ด ๊ฐ™์œผ๋ฉด ์ค‘๋ณต์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์–ด ํ•œ ๋ช…๋งŒ ๋‚จ์•„์•ผ ํ•จ

8-1. Student ํด๋ž˜์Šค ๊ตฌํ˜„ ์˜ˆ์‹œ (ํ•ต์‹ฌ: equals/hashCode ํ•™๋ฒˆ ๊ธฐ์ค€)

โœ… ํฌ์ธํŠธ

  • ์ค‘๋ณต ๊ธฐ์ค€ = studentId
  • ์ถœ๋ ฅ ํ˜•ํƒœ = toString()์ด ๊ฒฐ์ •

โš ๏ธ HashSet ์ถœ๋ ฅ ์ˆœ์„œ๊ฐ€ ๊ณ ์ •์ด ์•„๋‹ˆ๋ผ์„œ
“100,200,300 ์ˆœ์„œ๊ฐ€ ๊ผญ ํ•„์š””ํ•˜๋ฉด:

  • HashSet → LinkedHashSet์œผ๋กœ ๋ฐ”๊ฟ”์„œ ์ž…๋ ฅ ์ˆœ์„œ ์œ ์ง€ ๊ถŒ์žฅ

9) ํ•œ ์žฅ ์š”์•ฝ 

  • ArrayList(List)
    • ์ˆœ์„œ O, ์ค‘๋ณต O, ์ธ๋ฑ์Šค O
    • ์‚ญ์ œ/์‚ฝ์ž… ์‹œ ์š”์†Œ ์ด๋™ ๋ฐœ์ƒ
  • HashSet(Set)
    • ์ˆœ์„œ X(๋ณด์žฅ ์•ˆ ํ•จ), ์ค‘๋ณต X, ์ธ๋ฑ์Šค X
    • ์ค‘๋ณต ํŒ๋‹จ์€ hashCode() → equals() ์ˆœ์„œ๋กœ ํ•จ
    • ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐ์ฒด๋Š” equals/hashCode ๋‘˜ ๋‹ค ์žฌ์ •์˜ ํ•„์ˆ˜
  • Iterator
    • Set์ฒ˜๋Ÿผ ์ธ๋ฑ์Šค ์—†๋Š” ์ปฌ๋ ‰์…˜ ์ˆœํšŒ/์‚ญ์ œ์— ํ•„์ˆ˜
    • ์ˆœํšŒ ์ค‘ ์‚ญ์ œ๋Š” iterator.remove()๊ฐ€ ์ •์„

 

์‘ ์—ฐ์•„์•ผ, ์ง€๊ธˆ ๋งํ•œ ํ๋ฆ„์ด ๊ฑฐ์˜ ์ •๋‹ต์ด๊ณ , ๋”ฑ ํ•œ ๋ฌธ์žฅ๋งŒ ์ •ํ™•ํžˆ ๊ณ ์น˜๋ฉด ์™„๋ฒฝํ•ด์ ธ.


1) “HashSet์— ๋„ฃ์„ ๋•Œ Student๊ฐ€ ์˜ค๋ฒ„๋ผ์ด๋“œํ•œ hashCode/equals๋ฅผ ์“ด๋‹ค” → โœ… ๋งž์•„

set.add(student) ํ•  ๋•Œ HashSet์€ Student ๊ฐ์ฒด์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•ด:

  1. student.hashCode()
    → ์–ด๋А ์นธ(๋ฒ„ํ‚ท)์— ๋„ฃ์„์ง€ ๊ฒฐ์ •
  2. ๊ฐ™์€ ์นธ์— ์ด๋ฏธ ๋ญ”๊ฐ€ ์žˆ์œผ๋ฉด student.equals(existing)
    → ์ค‘๋ณต์ธ์ง€ ํŒ๋‹จ

๊ทธ๋ž˜์„œ ๋„ค ๋ง:

“Student ๊ฐ์ฒด์—์„œ๋Š” ์˜ค๋ฒ„๋ผ์ด๋“œ๋กœ ์ƒˆ๋กญ๊ฒŒ ์ •์˜ํ•œ hashCode/equals๋กœ ํŒ๋‹จํ•˜๊ฒŒ ๋งŒ๋“ค์—ˆ๋‹ค”

โœ… ๋งž์•„.


2) “๊ทธ๋•Œ toString๋„ ํŒ๋‹จ์— ์“ฐ๋‚˜?” → โŒ ์•„๋‹ˆ์•ผ (์—ฌ๊ธฐ๋งŒ ์ˆ˜์ •!)

์ค‘์š”:

  • ์ค‘๋ณต ํŒ๋‹จ์—๋Š” hashCode() + equals()๋งŒ ์‚ฌ์šฉ
  • toString()์€ ์ค‘๋ณต ํŒ๋‹จ๊ณผ ๋ฌด๊ด€
  • toString()์€ ์ถœ๋ ฅํ•  ๋•Œ๋งŒ ์‚ฌ์šฉ

์ฆ‰,
โœ… “ํŒ๋‹จ์€ hashCode/equals, ์ถœ๋ ฅ์€ toString”
์ด๋ ‡๊ฒŒ ์—ญํ• ์ด ๋ถ„๋ฆฌ๋ผ ์žˆ์–ด.


3) “toString์„ ์“ฐ๋ฉด String์œผ๋กœ ์ €์žฅ๋œ ๊ฐ์ฒด๋ฅผ ์ถœ๋ ฅํ•  ๋•Œ…” → ๊ฐœ๋…๋งŒ ์ •๋ฆฌํ•˜๋ฉด โœ…

์—ฌ๊ธฐ์„œ ํ‘œํ˜„์ด ์‚ด์ง ํ—ท๊ฐˆ๋ฆฐ ๋ถ€๋ถ„:

(A) HashSet์— Student๋ฅผ ๋„ฃ์€ ๊ฒฝ์šฐ

  • Set ์•ˆ์—๋Š” Student ๊ฐ์ฒด๊ฐ€ ์ €์žฅ๋ผ (String์œผ๋กœ ์ €์žฅ๋˜๋Š” ๊ฒŒ ์•„๋‹˜)
  • ์ถœ๋ ฅํ•  ๋•Œ๋งŒ:
    • System.out.println(set) → set.toString() ํ˜ธ์ถœ
    • ๊ทธ ๋‚ด๋ถ€์—์„œ ๊ฐ ์›์†Œ์— ๋Œ€ํ•ด student.toString() ํ˜ธ์ถœ
    • ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๊ฐ€ ์ •์˜ํ•œ ํ˜•์‹ "ํ•™๋ฒˆ: ์ด๋ฆ„" ์œผ๋กœ ๋ณด์ด๋Š” ๊ฑฐ์•ผ

โœ… ๊ฒฐ๋ก : ๊ฐ์ฒด ์ €์žฅ์€ ๊ฐ์ฒด ๊ทธ๋Œ€๋กœ / ์ถœ๋ ฅ๋งŒ toString() ๊ฒฐ๊ณผ

โœ… ์ •๋ฆฌ

  • toString()์ด “์ €์žฅ๋˜์–ด ์žˆ๋Š”” ๊ฒŒ ์•„๋‹ˆ๋ผ,
  • ๊ฐ์ฒด๊ฐ€ ์ถœ๋ ฅ๋  ๋•Œ๋งˆ๋‹ค println()์ด ๊ทธ ์ˆœ๊ฐ„ toString()์„ ํ˜ธ์ถœํ•ด์„œ ๋ฌธ์ž์—ด์„ ๋งŒ๋“ค์–ด ์ถœ๋ ฅํ•˜๋Š” ๊ฑฐ์•ผ.

์˜ˆ์‹œ๋กœ ๋А๋‚Œ ์žก๊ธฐ

 

'๐Ÿ‘ฉโ€๐Ÿ’ปDeveloper ๐Ÿ’ก > ๐Ÿ’พBack-end๐Ÿ•Š๏ธ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

JAVA ์Šค๋ ˆ๋“œ(Thread) ์™„์ „ ์ •๋ฆฌ  (0) 2026.02.12
Java ์ œ๋„ค๋ฆญ(Generic) ์™„์ „ ์ •๋ณต  (0) 2026.02.12
Java ์˜ˆ์™ธ ์ฒ˜๋ฆฌ  (0) 2026.02.11
Java 8. Interface  (0) 2026.02.10
JAVA : ์ƒ์†  (0) 2026.02.10
'๐Ÿ‘ฉ‍๐Ÿ’ปDeveloper ๐Ÿ’ก/๐Ÿ’พBack-end๐Ÿ•Š๏ธ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • JAVA ์Šค๋ ˆ๋“œ(Thread) ์™„์ „ ์ •๋ฆฌ
  • Java ์ œ๋„ค๋ฆญ(Generic) ์™„์ „ ์ •๋ณต
  • Java ์˜ˆ์™ธ ์ฒ˜๋ฆฌ
  • Java 8. Interface
fulfilling_enjoyable yeona๐Ÿถ๐Ÿฆซ
fulfilling_enjoyable yeona๐Ÿถ๐Ÿฆซ
Quantitative Research Engineer & Quantitative Strategist | Multimodal Alpha (Price/News/On-chain) | Regime-aware, Cost-included Backtests | Remote-first ์—ฐ๋ฆฌ์˜ ๋‚œ ๋จธ๋‹ˆ๐Ÿ’ฐ๊ฐ€ ์ข‹์•„๐Ÿ’™๐Ÿฅณ ์ถฉ๋งŒํ•˜๊ฒŒ ๊ทธ๋ฆฌ๊ณ  ์ฆ๊ฒ๊ฒŒ ๐Ÿถ ๐Ÿฆซ ๐Ÿ’›
  • fulfilling_enjoyable yeona๐Ÿถ๐Ÿฆซ
    Yeona's Diary
    Quantitative Researcher & Engineer
    AboutMe ๋ชฉํ‘œ GitHub Blog
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๐Ÿค ๐Ÿ˜Ž ์•ˆ๋…•โ˜ƒ๏ธ๐Ÿ’ž (95) N
      • ๐Ÿ’™ ๐Ÿค Diary๐Ÿฐ ๐ŸŽ€ ๐Ÿงธ (39) N
        • ๐Ÿ—ฝ๋ฏธ๊ตญ DS & CS ๋ฐ•์‚ฌ ์ด๋ฏผ๐Ÿ‹ (28)
        • ๐Ÿ›ซ์—ฌํ–‰ ์ด์•ผ๊ธฐ (1)
        • ๐Ÿ“’์˜ค๋Š˜ ์ด์•ผ๊ธฐ๐Ÿ’’๐Ÿซง๐ŸŒค๏ธ (6) N
        • ๐Ÿฐโ˜˜๏ธ๐Ÿป‍โ„๏ธ๊ฐ•์•„์ง€ ์œก์•„ (0)
      • ๐ŸฌActuary๐Ÿคธ‍โ™€๏ธโœจ (1)
      • ๐Ÿ‘ฉ‍๐Ÿ’ปDeveloper ๐Ÿ’ก (35)
        • โš’๏ธ์‚ฝ์งˆ ๊ธฐ๋ก๊ธฐ๐Ÿ“[TIL] (6)
        • ๐Ÿ–ผ๏ธFront-end๐ŸŽจ (3)
        • ๐Ÿ’พBack-end๐Ÿ•Š๏ธ (15)
        • ๐Ÿคน‍โ™€๏ธAlgorithm & Coding Test๐Ÿ’ƒ (5)
        • ๐Ÿ—ปData๐Ÿ”๏ธ (1)
        • ๐Ÿ“Project๐Ÿ• (1)
      • ๐Ÿ’ฐ๊ฒฝ์ œ์  ์ž์œ  ๋‹ฌ์„ฑโœŒ๏ธ๐ŸคŸ (8)
        • ๐Ÿ“ŠQuant๐Ÿ“ˆ๐Ÿ‘ (4)
        • ๐Ÿฐ๐Ÿ›’๐Ÿฅ‡ (1)
        • ๐Ÿ’Ž ํˆฌ์ž ์‹ค์ „ ๊ฒฝํ—˜ โ˜บ๏ธ (1)
        • ๐Ÿ… Bitcoin 15๊ฐœ ๋ชจ์œผ๊ธฐ : 2040๋…„ 200์–ต+ (0)
        • ๐ŸŒŽ๋ฏธ๊ตญ ์‹œ์žฅ๐Ÿฆ (0)
      • ๐ŸŒค๏ธCloud๐ŸŒค๏ธโ˜๏ธ (2)
        • AWS (1)
        • Kubernetes (0)
        • Google Cloud Professional (0)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

    • git
  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ์‹œ์นด๊ณ ๋Œ€ํ•™๊ต
    ์‹œ์นด๊ณ ๋Œ€
    AWS
    ๋ฏธ๊ตญ์œ ํ•™
    CS
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    Java
    ๊ฐ€์„ํ•™๊ธฐ
    DS
    ์‹œ์นด๊ณ 
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.5
fulfilling_enjoyable yeona๐Ÿถ๐Ÿฆซ
JAVA ์ปฌ๋ ‰์…˜ ์ž๋ฃŒ๊ตฌ์กฐ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”