HashMap

putIfAbsent()

Map 객체에 Key 에 ν•΄λ‹Ήν•˜λŠ” 값이 μ—†μœΌλ©΄ 값을 λ„£λŠ”λ‹€.

default V putIfAbsent(K key, V value) {
  V v = get(key);
  if (v == null) {
      v = put(key, value);
  }

  return v;
}

값이 μ—†λŠ” μƒνƒœμ—μ„œ putIfAbsent λ₯Ό μ‚¬μš©ν•˜λ©΄ null 을 λ°˜ν™˜ν•œλ‹€.

computeIfAbsent()

Map 객체에 Key 에 ν•΄λ‹Ήν•˜λŠ” 값이 μ—†μœΌλ©΄ 맀핑 ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•œλ‹€.

putIfAbsent() 와 μœ μ‚¬ν•˜μ§€λ§Œ ν•¨μˆ˜ μΈν„°νŽ˜μ΄μŠ€λ₯Ό ν†΅ν•œ 결과값을 μ‚½μž…ν•œλ‹€.

default V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction) {
  Objects.requireNonNull(mappingFunction);
  V v;
  
  if ((v = get(key)) == null) {
    V newValue;
    if ((newValue = mappingFunction.apply(key)) != null) {
      put(key, newValue);
      return newValue;
    }
  }

  return v;
}

compute()

Map 객체에 Key 에 ν•΄λ‹Ήν•˜λŠ” κ°’μ˜ μ‘΄μž¬μš°λ¬΄μ™€ 상관없이 맀핑 ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•œλ‹€.

computeIfPresent()

Map 객체에 Key 에 ν•΄λ‹Ήν•˜λŠ” 값이 있으면 맀핑 ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•œλ‹€.

getOfDefault

Map 객체에 값이 μ—†μœΌλ©΄ μ§€μ •ν•œ default κ°’ (2번째 인자) 을 κ°€μ Έμ˜¨λ‹€.

productPriceMap.getOrDefault("Fish", 29.4);