JAVA & OOP

[JAVA] Optional ํด๋ž˜์Šค์˜ orElse์™€ orElseGet ์ฐจ์ด

2024. 3. 15. 00:41
๋ชฉ์ฐจ
  1. orElse()์™€ orElseGet()์˜ ๊ณตํ†ต์ 
  2. orElse()์™€ orElseGet()์˜ ์ฐจ์ด์ 

 

 

ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ orElse๋ฅผ ์‚ฌ์šฉํ•œ ์ฝ”๋“œ๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ ๋‚ด ์˜๋„๋Œ€๋กœ ์ž‘๋™์„ ํ•˜์ง€ ์•Š์•„์„œ ์˜๋ฌธ์ ์ด ๋“ค์—ˆ๋‹ค.

 

๊ฒŒ์‹œ๊ธ€์„ ์—…๋กœ๋“œํ•  ๋•Œ ์œ„์น˜ ์ •๋ณด๋ฅผ ๊ฐ™์ด ์—…๋กœ๋“œํ•˜๋Š”๋ฐ, ์ด ๊ณผ์ •์—์„œ ์œ„์น˜ DB์— ํ•ด๋‹น ์ •๋ณด๊ฐ€ ์žˆ๋‹ค๋ฉด ์œ„์น˜ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š๊ณ , ์—†๋‹ค๋ฉด ์ƒˆ๋กœ ๋งŒ๋“ค๋„๋ก ํ•˜๋Š” ๋กœ์ง์ด์—ˆ๋‹ค!

 

orElse๋ฅผ ์‚ฌ์šฉํ–ˆ๋”๋‹ˆ ์œ„์น˜ ์ •๋ณด๊ฐ€ ๋‘ ๊ฐœ๊ฐ€ ์ €์žฅ์ด ๋˜๋Š” ์•„์ด๋Ÿฌ๋‹ˆํ•œ ์ƒํ™ฉ์ด์—ˆ๋‹ค...

 

๊ฒŒ์‹œ๊ธ€ DB
์œ„์น˜ ์ •๋ณด DB

 

 

ํ•ด๋‹น ๋กœ์ง์ฒ˜๋Ÿผ ์ฝ”๋“œ๋ฅผ ์งฐ๊ณ , ๋‹น์—ฐํžˆ placeRepository์—์„œ null๊ฐ’์„ ๊ฐ€์ ธ์™”์„ ๋•Œ๋งŒ orElse๊ฐ€ ์ˆ˜ํ–‰๋œ๋‹ค๊ณ  ์ƒ๊ฐ์„ ํ–ˆ์—ˆ๋‹ค. 

 

๊ทผ๋ฐ ์ฐพ์•„๋ณด๋‹ˆ๊นŒ ๋ฐ˜์€ ๋งž๊ณ  ๋ฐ˜์€ ํ‹€๋ ธ์—ˆ๋‹ค!!

 

 

 

orElse()์™€ orElseGet()์˜ ๊ณตํ†ต์ 

๋‘ ๋ฉ”์„œ๋“œ ๋ชจ๋‘ Optional ํด๋ž˜์Šค ๊ฐ์ฒด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์‹ค์ œ ๊ฐ’์ด null์ผ ๊ฒฝ์šฐ ์–ด๋–ค ๊ฐ’์œผ๋กœ ๋Œ€์ฒดํ•ด์„œ return ํ•ด์ฃผ๋Š”์ง€๋ฅผ ์ •์˜ํ•ด ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. 

 

 

orElse()์™€ orElseGet()์˜ ์ฐจ์ด์ 

public T orElse(T other) {
  return value != null ? value : other;
}

public T orElseGet(Supplier<? extends T> other) {
    return value != null ? value : other.get();
}

Optional ํด๋ž˜์Šค์˜ orElse ๋ฉ”์„œ๋“œ๋ฅผ ๋ณด๋ฉด T ํด๋ž˜์Šค๋ฅผ ์ธ์ˆ˜๋กœ ๋ฐ›๊ณ  ์žˆ๊ณ ,

orElseGet์€ T ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์€ ํ•˜์œ„ ํด๋ž˜์Šค๋ฅผ ๋ฆฌํ„ดํ•ด์ฃผ๋Š” Supplier ํ•จ์ˆ˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ฐ›๊ณ  ์žˆ๋‹ค.

 

orElse()๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ธ์ˆ˜๋กœ ๋ฐ›๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ฐ’์„ ์ธ์ˆ˜๋กœ ๋ฐ›๋Š”๋‹ค.  ๋”ฐ๋ผ์„œ, orElse() ๋ฉ”์„œ๋“œ ์ธ์ˆ˜๋ฅผ ํ• ๋‹นํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ทธ ์•ˆ์— ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰์‹œํ‚จ ํ›„ orElse์˜ ์ธ์ˆ˜๋กœ ํ• ๋‹นํ•˜๊ธฐ ๋•Œ๋ฌธ์— Optional์˜ null๊ฐ’์— ์ƒ๊ด€์—†์ด orElse()์˜ ๋ฉ”์„œ๋“œ๊ฐ€ ์‹คํ–‰๋˜๊ฒŒ ๋œ๋‹ค.

 

๋ฐ˜๋Œ€๋กœ orElseGet()์˜ ๊ฒฝ์šฐ์— ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋œ Supplier ๋ฉ”์„œ๋“œ๋Š” Optional์˜ ๊ฐ’์ด ์—†์„ ๋•Œ๋งŒ get()์„ ํ†ตํ•ด ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— Optional์ด null๊ฐ’์ผ ๋•Œ๋งŒ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

๊ทธ๋ž˜์„œ orElseGet()์„ ์‚ฌ์šฉํ•ด์„œ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•ด๋ณด์•˜๋Š”๋ฐ ์›๋ž˜ ์›ํ•˜๋˜ ๋กœ์ง๋Œ€๋กœ ์œ„์น˜ ์ •๋ณด๊ฐ€ ํ•˜๋‚˜๋งŒ ์ƒ์„ฑ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์—ˆ๋‹ค!!

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'JAVA & OOP' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[JAVA] Garbage Collection(๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜)์ด๋ž€?  (0) 2024.03.31
[JAVA] HashCode์™€ equals ์˜ค๋ฒ„๋ผ์ด๋”ฉ  (0) 2024.03.21
Java 17์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ   (2) 2024.01.06
JAVA :: HashMap, hashing ๊ฐœ๋… ์ •๋ฆฌ  (0) 2022.08.14
JAVA :: Optional ํด๋ž˜์Šค ๊ฐœ๋…์ •๋ฆฌ  (0) 2022.07.31
  1. orElse()์™€ orElseGet()์˜ ๊ณตํ†ต์ 
  2. orElse()์™€ orElseGet()์˜ ์ฐจ์ด์ 
'JAVA & OOP' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [JAVA] Garbage Collection(๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜)์ด๋ž€?
  • [JAVA] HashCode์™€ equals ์˜ค๋ฒ„๋ผ์ด๋”ฉ
  • Java 17์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 
  • JAVA :: HashMap, hashing ๊ฐœ๋… ์ •๋ฆฌ
DAHLIA CHOI
DAHLIA CHOI
DAHLIA CHOI
๐ŸŒผ dali's log ๐ŸŒผ
DAHLIA CHOI
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (103)
    • Spring (42)
    • JAVA & OOP (8)
    • AWS (2)
    • DevOps (5)
    • Network (7)
    • DB (5)
    • Algorithm (9)
      • BOJ (6)
      • PROGRAMMERS (2)
      • LEETCODE (0)
    • Books (5)
    • ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… (5)
    • ํšŒ๊ณ  (0)
    • ๊ธฐํƒ€ (5)
    • FRENCH (1)
    • ํ•„์‚ฌ (2)
    • ๊ฒฝํ—˜ (5)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

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

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

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๊ธ€

hELLO ยท Designed By ์ •์ƒ์šฐ.
DAHLIA CHOI
[JAVA] Optional ํด๋ž˜์Šค์˜ orElse์™€ orElseGet ์ฐจ์ด
์ƒ๋‹จ์œผ๋กœ

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

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.