Amenable
Amenable's Blog
Amenable
  • λΆ„λ₯˜ 전체보기 (189)
    • πŸ“‚ JAVA (87)
      • μ΄νŽ™ν‹°λΈŒ μžλ°” (65)
      • μ£Όμš” κ°œλ… (22)
    • πŸ“‚ 개발 μ„œμ  (22)
      • μ‹€μš©μ£Όμ˜ ν”„λ‘œκ·Έλž˜λ¨Έ (1)
      • 객체지ν–₯의 사싀과 μ˜€ν•΄ (2)
      • 클린 μ½”λ“œ (8)
      • ν•¨κ»˜ 자라기 (1)
      • 그림으둜 λ°°μš°λŠ” HTTP&Network Basic (10)
    • πŸ“‚ λ°μ΄ν„°λ² μ΄μŠ€ (8)
      • κ°œλ… (8)
      • λ¬Έμ œν’€μ΄ (0)
    • πŸ“‚ λ„€νŠΈμ›Œν¬ (14)
      • κ°œλ… (6)
      • 성곡과 μ‹€νŒ¨λ₯Ό κ²°μ •ν•˜λŠ” 1%의 λ„€νŠΈμ›Œν¬ 원리 (8)
    • πŸ“‚ μŠ€ν”„λ§ (13)
      • κΈ°λ³Έ κ°œλ… (13)
    • πŸ“‚ WEB (5)
    • πŸ“‚ 자료ꡬ쑰 (12)
      • κ°œλ… (2)
      • μ •λ ¬ (8)
      • 트리 (2)
    • πŸ“‚ μ•Œκ³ λ¦¬μ¦˜ (10)
      • μ΅œμ†Œμ‹ μž₯트리 (2)
      • μ΅œλ‹¨ 경둜 (2)
      • λ¬Έμžμ—΄ (2)
      • ETC (4)
    • πŸ“‚ μ•Œκ³ λ¦¬μ¦˜_λ¬Έμ œν’€μ΄ (4)
      • BOJ_λ°±μ€€ (4)
    • πŸ“‚ ν”„λ‘œκ·Έλž˜λ° (3)
    • πŸ“‚ DevOps (2)
      • 배포 (2)
    • πŸ“‚ ν›„κΈ° (8)
      • μš°μ•„ν•œ ν…Œν¬μ½”μŠ€(ν”„λ¦¬μ½”μŠ€) (4)
      • 2023λ…„ (3)
      • 2024λ…„ (1)
    • πŸ“‚ 회고 (1)
      • 2023λ…„ (1)

λΈ”λ‘œκ·Έ 메뉴

  • πŸš€ GitHub

ν‹°μŠ€ν† λ¦¬

hELLO Β· Designed By μ •μƒμš°.
Amenable

Amenable's Blog

λžŒλ‹€λ³΄λ‹€λŠ” λ©”μ„œλ“œ μ°Έμ‘°λ₯Ό μ‚¬μš©ν•˜λΌ - [7μž₯. λžŒλ‹€μ™€ 슀트림(μ•„μ΄ν…œ43)]
πŸ“‚ JAVA/μ΄νŽ™ν‹°λΈŒ μžλ°”

λžŒλ‹€λ³΄λ‹€λŠ” λ©”μ„œλ“œ μ°Έμ‘°λ₯Ό μ‚¬μš©ν•˜λΌ - [7μž₯. λžŒλ‹€μ™€ 슀트림(μ•„μ΄ν…œ43)]

2023. 7. 18. 20:51

  λžŒλ‹€κ°€ 읡λͺ… ν΄λž˜μŠ€λ³΄λ‹€ λ‚˜μ€ 점 μ€‘μ—μ„œ κ°€μž₯ 큰 νŠΉμ§•μ€ 간결함이닀.

  그런데, μžλ°”μ—λŠ” ν•¨μˆ˜ 객체λ₯Ό 심지어 λžŒλ‹€λ³΄λ‹€λ„ 더 κ°„κ²°ν•˜κ²Œ λ§Œλ“œλŠ” 방법이 μžˆλŠ”λ°, 그것이 λ°”λ‘œ λ©”μ„œλ“œ μ°Έμ‘°(method reference)λ‹€.

  이번 κΈ€μ—μ„œλŠ” λžŒλ‹€μ™€ λ©”μ„œλ“œ μ°Έμ‘°λ₯Ό 비ꡐ해 보고 μ–Έμ œ μ–΄λ–€ 것을 μ“°λ©΄ 쒋은지 μ•Œμ•„λ³΄λ„λ‘ ν•˜μž.

 

πŸ“™ 1. λžŒλ‹€μ™€ λ©”μ„œλ“œ μ°Έμ‘°

public static void main(String[] args) {

    Map<Integer, Integer> map = new HashMap<>();

    int myKey = 1;
    int myValue = 3;
    map.merge(myKey, myValue, (count, incr) -> count + incr);
    System.out.println(map.get(myKey)); // 3

    myValue = 5;
    map.merge(myKey, myValue, (count, incr) -> count + incr);
    System.out.println(map.get(myKey)); // 8
}

  μœ„μ˜ merge λ©”μ„œλ“œλŠ” λ§΅ μ•ˆμ— myKey에 ν•΄λ‹Ήν•˜λŠ” ν‚€κ°€ μ—†λ‹€λ©΄ myValueλ₯Ό λ§€ν•‘ν•˜κ³ , 이미 μžˆλ‹€λ©΄ κΈ°μ‘΄ 값에 myValueλ₯Ό λ”ν•˜λŠ” λ©”μ„œλ“œλ‹€.

  μ„Έ 번째 인수둜 λžŒλ‹€μ‹μ„ μ‚¬μš©ν•˜κ³  μžˆλŠ”λ°, λ§€κ°œλ³€μˆ˜μΈ count와 incr은 크게 ν•˜λŠ” 일이 없이 곡간을 μ°¨μ§€ν•˜κ³  μžˆλ‹€. κ·Έλž˜μ„œ μ΄ μ½”λ“œλ₯Ό μ •적 λ©”μ„œλ“œ sum을 μ‚¬μš©ν•˜μ—¬ μ•„λž˜μ™€ κ°™μ΄ λ³€ν™˜ν•  μˆ˜ μžˆλ‹€.

public static void main(String[] args) {

    Map<Integer, Integer> map = new HashMap<>();

    int myKey = 1;
    int myValue = 3;
    map.merge(myKey, myValue, Integer::sum);
    System.out.println(map.get(myKey)); // 3

    myValue = 5;
    map.merge(myKey, myValue, Integer::sum);
    System.out.println(map.get(myKey)); // 8
}

 

  일반적으둜 λ©”μ„œλ“œ μ°Έμ‘°λ₯Ό μ‚¬μš©ν•˜λŠ” 편이 더 μ§§κ³  κ°„κ²°ν•˜λ‹€. κ·Έλ ‡κΈ° λ•Œλ¬Έμ— λžŒλ‹€λ‘œ κ΅¬ν˜„ν–ˆμ„ λ•Œ λ„ˆλ¬΄ κΈΈκ±°λ‚˜ λ³΅μž‘ν•˜λ‹€λ©΄ λ©”μ„œλ“œ μ°Έμ‘°κ°€ 쒋은 λŒ€μ•ˆμ΄ λœλ‹€.

  λ˜ν•œ, λ©”μ„œλ“œ μ°Έμ‘°λ₯Ό μ΄μš©ν•œλ‹€λ©΄ κΈ°λŠ₯을 잘 λ“œλŸ¬λ‚΄λŠ” 이름을 지어쀄 수 있고 μΉœμ ˆν•œ μ„€λͺ…을 λ¬Έμ„œλ‘œ 남길 μˆ˜λ„ μžˆλ‹€.

 

 

πŸ“™ 2. λžŒλ‹€κ°€ λ©”μ„œλ“œ μ°Έμ‘°λ³΄λ‹€ λ” λ‚˜μ€ κ²½μš°

  κ·Έλ ‡λ‹€κ³  항상 λ©”μ„œλ“œ μ°Έμ‘°κ°€ λžŒλ‹€λ³΄λ‹€ 더 쒋은 것은 μ•„λ‹ˆλ‹€. μ•„λž˜μ˜ 2κ°€μ§€ μƒν™©μ„ μ‚΄νŽ΄λ³΄μž.

🚩 1. λžŒλ‹€κ°€ 더 κ°„κ²°ν•œ 경우

  항상 λ©”μ„œλ“œ μ°Έμ‘°κ°€ λžŒλ‹€λ³΄λ‹€ 더 κ°„κ²°ν•œ 것은 μ•„λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, μ•„λž˜μ™€ κ°™μ΄ λ©”μ„œλ“œμ™€ λžŒλ‹€κ°€ κ°™μ€ ν΄λž˜μŠ€μ— μžˆμ„ λ•Œ λžŒλ‹€κ°€ λ©”μ„œλ“œ μ°Έμ‘°λ³΄λ‹€ λ” κ°„결해지기도 ν•œλ‹€.

public static void main(String[] args) {

    // λ©”μ„œλ“œ μ°Έμ‘°
    service.execute(GoshThisClassNameIsHumongous::action);
    // λžŒλ‹€
    service.execute(() -> action());
}

  λ©”μ„œλ“œ μ°Έμ‘° μͺ½μ΄ 더 짧지도, 더 λͺ…ν™•ν•˜μ§€λ„ μ•ŠκΈ° λ•Œλ¬Έμ—, 이런 κ²½μš°μ—λŠ” λžŒλ‹€ μͺ½μ΄ λ‚«λ‹€.

 

🚩 2. λ§€κ°œλ³€μˆ˜μ˜ 이름을 잘 μ΄μš©ν•˜λŠ” 경우

  λžŒλ‹€μ—μ„œλŠ” λ§€κ°œλ³€μˆ˜μ˜ 이름 μžμ²΄κ°€ ν”„λ‘œκ·Έλž˜λ¨Έμ—κ²Œ 쒋은 κ°€μ΄λ“œκ°€ 될 μˆ˜λ„ μžˆλ‹€. 이런 λžŒλ‹€λŠ” κΈΈμ΄λŠ” λ” κΈΈμ§€λ§Œ λ©”μ„œλ“œ μ°Έμ‘°λ³΄λ‹€ μ½κΈ° μ‰½κ³  μœ μ§€λ³΄μˆ˜λ„ λ” μ‰¬μšΈ μˆ˜ μžˆλ‹€.

 

 

πŸ“™ 3. λ©”μ„œλ“œ μ°Έμ‘°μ˜ μœ ν˜•

  λ©”μ„œλ“œ 참쑰의 μœ ν˜• λ‹€μŒκ³Ό 같이 5κ°€μ§€κ°€ μžˆλ‹€.

  1. 정적 λ©”μ„œλ“œλ₯Ό κ°€λ¦¬ν‚€λŠ” λ©”μ„œλ“œ μ°Έμ‘°
  2. μˆ˜μ‹  κ°μ²΄(μ°Έμ‘° λŒ€μƒ μΈμŠ€ν„΄μŠ€)λ₯Ό νŠΉμ •ν•˜λŠ” ν•œμ •적 μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œ μ°Έμ‘°
  3. μˆ˜μ‹  κ°μ²΄λ₯Ό νŠΉμ •ν•˜μ§€ μ•ŠλŠ” λΉ„ν•œμ •μ  μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œ μ°Έμ‘°
  4. 클래슀 μƒμ„±μžλ₯Ό κ°€λ¦¬ν‚€λŠ” λ©”μ„œλ“œ μ°Έμ‘°
  5. λ°°μ—΄ μƒμ„±μžλ₯Ό κ°€λ¦¬ν‚€λŠ” λ©”μ„œλ“œ μ°Έμ‘°
λ©”μ„œλ“œ μ°Έμ‘° μœ ν˜• 예 같은 κΈ°λŠ₯을 ν•˜λŠ” λžŒλ‹€
정적 Integer::parseInt str -> Integer.paserInt(str)
ν•œμ •μ  (μΈμŠ€ν„΄μŠ€) Instant.now()::isAfter Instant then = Instant.now();
t -> then.isAfter(t)
λΉ„ν•œμ •μ  (μΈμŠ€ν„΄μŠ€) String::toLowerCase str -> str.toLowerCase()
클래슀 μƒμ„±μž TreeMap<K, V>::new () -> new TreeMap<K, V>()
λ°°μ—΄ μƒμ„±μž int[]::new len -> new int[len]

 

ν•΄λ‹Ή 글은 Joshua Bloch λ‹˜μ˜ 'Effective Java 3/E'λ₯Ό μ°Έκ³ ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

'πŸ“‚ JAVA > μ΄νŽ™ν‹°λΈŒ μžλ°”' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

μŠ€νŠΈλ¦Όμ€ μ£Όμ˜ν•΄μ„œ μ‚¬μš©ν•˜λΌ - [7μž₯. λžŒλ‹€μ™€ 슀트림(μ•„μ΄ν…œ45)]  (0) 2023.12.09
ν‘œμ€€ ν•¨μˆ˜ν˜• μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ‚¬μš©ν•˜λΌ - [7μž₯. λžŒλ‹€μ™€ 슀트림(μ•„μ΄ν…œ44)]  (0) 2023.07.24
읡λͺ… ν΄λž˜μŠ€λ³΄λ‹€λŠ” λžŒλ‹€λ₯Ό μ‚¬μš©ν•˜λΌ - [7μž₯. λžŒλ‹€μ™€ 슀트림(μ•„μ΄ν…œ42)]  (0) 2023.07.10
μ •μ˜ν•˜λ €λŠ” 것이 νƒ€μž…μ΄λΌλ©΄ 마컀 μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ‚¬μš©ν•˜λΌ - [6μž₯. μ—΄κ±° νƒ€μž…κ³Ό μ• λ„ˆν…Œμ΄μ…˜(μ•„μ΄ν…œ41)]  (0) 2023.07.09
@Override μ• λ„ˆν…Œμ΄μ…˜μ„ μΌκ΄€λ˜κ²Œ μ‚¬μš©ν•˜λΌ - [6μž₯. μ—΄κ±° νƒ€μž…κ³Ό μ• λ„ˆν…Œμ΄μ…˜(μ•„μ΄ν…œ40)]  (0) 2023.07.09
    'πŸ“‚ JAVA/μ΄νŽ™ν‹°λΈŒ μžλ°”' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • μŠ€νŠΈλ¦Όμ€ μ£Όμ˜ν•΄μ„œ μ‚¬μš©ν•˜λΌ - [7μž₯. λžŒλ‹€μ™€ 슀트림(μ•„μ΄ν…œ45)]
    • ν‘œμ€€ ν•¨μˆ˜ν˜• μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ‚¬μš©ν•˜λΌ - [7μž₯. λžŒλ‹€μ™€ 슀트림(μ•„μ΄ν…œ44)]
    • 읡λͺ… ν΄λž˜μŠ€λ³΄λ‹€λŠ” λžŒλ‹€λ₯Ό μ‚¬μš©ν•˜λΌ - [7μž₯. λžŒλ‹€μ™€ 슀트림(μ•„μ΄ν…œ42)]
    • μ •μ˜ν•˜λ €λŠ” 것이 νƒ€μž…μ΄λΌλ©΄ 마컀 μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ‚¬μš©ν•˜λΌ - [6μž₯. μ—΄κ±° νƒ€μž…κ³Ό μ• λ„ˆν…Œμ΄μ…˜(μ•„μ΄ν…œ41)]
    Amenable
    Amenable
    CS, μžλ°”, 자료ꡬ쑰, μ•Œκ³ λ¦¬μ¦˜, μŠ€ν”„λ§, μŠ€ν”„λ§ λΆ€νŠΈμ— ν•΄λ‹Ήν•˜λŠ” κ°œλ°œμ— κ΄€ν•œ λ‚΄μš©μ„ κ³΅μœ ν•©λ‹ˆλ‹€.

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”