๐ฏ ์์ดํ 55. ์ต์ ๋ ๋ฐํ์ ์ ์คํ ํ๋ผ.
๊ฐ์ ๋ฐํํ์ง ๋ชปํ ๊ฐ๋ฅ์ฑ์ด ์๊ณ , ํธ์ถํ ๋๋ง๋ค ๋ฐํ๊ฐ์ด ์์ ๊ฐ๋ฅ์ฑ์ ์ผ๋์ ๋ฌ์ผ ํ๋ ๋ฉ์๋๋ผ๋ฉด ์ต์
๋์ ๋ฐํํด์ผ ํ ์ํฉ์ผ ์ ์๋ค. ํ์ง๋ง ์ต์
๋ ๋ฐํ์๋ ์ฑ๋ฅ ์ ํ๊ฐ ๋ค๋ฐ๋ฅด๋, ์ฑ๋ฅ์ ๋ฏผ๊ฐํ ๋ฉ์๋๋ผ๋ฉด null์ ๋ฐํํ๊ฑฐ๋ ์์ธ๋ฅผ ๋์ง๋ ํธ์ด ๋์ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ์ต์
๋์ ๋ฐํ๊ฐ ์ด์ธ์ ์ฉ๋๋ก ์ฐ๋ ๊ฒฝ์ฐ๋ ๋งค์ฐ ๋๋ฏ๋ค.
์ต์ ๋์ ์์๋ฅผ ์ต๋ 1๊ฐ ๊ฐ์ง ์ ์๋ '๋ถ๋ณ'์ปฌ๋ ์ ์ด๋ค.
๋ณดํต์ T๋ฅผ ๋ฐํํด์ผ ํ์ง๋ง ํน์ ์กฐ๊ฑด์์๋ ์๋ฌด๊ฒ๋ ๋ฐํํ์ง ์์์ผ ํ ๋ T ๋์ Optional
- ์ปฌ๋ ์
์์ ์ต๋๊ฐ์ ๊ตฌํ๋ค(์ปฌ๋ ์
์ด ๋น์์ผ๋ฉด ์์ธ๋ฅผ ๋์ง๋ค).
public static <E extends Comparable<E>> E max(Collection<E> c) {
if (c.isEmpty())
throw new IllegalArgumentException("๋น ์ปฌ๋ ์
");
E result = null;
for (E e : c)
if (result == null || e.compareTo(result) > 0)
result = Objects.requireNonNull(e);
return result;
}
์ด ๋ฉ์๋์์ ๋น ์ปฌ๋ ์
์ ๊ฑด๋ค๋ฉด IllegalArgumentException
์ ๋์ง๋ค. ์ด์ ์๋ Optional
- ์ปฌ๋ ์
์์ ์ต๋๊ฐ์ ๊ตฌํด Optional
๋ก ๋ฐํํ๋ค.
public static <E extends Comparable<E>> Optional<E> max(Collection<E> c) {
if (c.isEmpty())
return Optional.empty();
E result = null;
for (E e : c)
if (result == null || e.compareTo(result) > 0)
result = Objects.requireNonNull(e);
return Optional.of(result);
}
- ์ปฌ๋ ์
์์ ์ต๋๊ฐ์ ๊ตฌํด Optional
๋ก ๋ฐํํ๋ค. - ์คํธ๋ฆผ ๋ฒ์
public static <E extends Comparable<E>> Optional<E> max(Collection<E> c) {
return c.stream().max(Comparator.naturalOrder());
}
์ฐธ๊ณ ์๋ฃ
Joshua Bloch, ใEffective Java 3/Eใ, ๊ฐ์๋งต์ ์ฎ๊น, ํ๋ก๊ทธ๋๋ฐ์ธ์ฌ์ดํธ(2018)
http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788966262281&orderClick=LEa&Kc=