나의 개발일지



· Java/Java 8
n 이하의 자연수를 소수와 비소수로 분류하는 예제를 커스텀 컬렉터를 통해서 성능을 개선해보겠습니다. 널리 알려진 방법인 에라토스테네스의 체와 partitioningBy를 이용해서 다음과 같이 분류할 수 있습니다. public class PartitionPrimeNumbers { public static void main(String[] args) { Map partitionPrimeList = partitionPrimes(10); System.out.println(partitionPrimeList); } public static boolean isPrime(int candidate) { int candidateRoot = (int)Math.sqrt(candidate); // 에라토스테네스의 체 retur..
· Java/Java 8
Stream처럼 사용하기 Optional을 제대로 사용하려면, Optional을 최대 1개의 원소를 가지고 있는 특별한 Stream이라고 생각하면 좋습니다. Optional 클래스와 Stream 클래스 간에 직접적인 구현이나 상속관계는 없지만 사용 방법이 매우 유사하기 때문입니다. Stream 클래스가 가지고 있는 map()이나 flatMap(), filter()와 같은 메서드를 Optional도 가지고 있습니다. map() 사용하기 Stream API를 다루듯이 Optional API를 사용하여 getCityOfMemberFromOrder() 메서드를 리팩토링 해보겠습니다. 메서드 체이닝의 각 단계 별로 자세히 살펴보겠습니다. ofNullable() 정적 팩토리 메서드를 호출하여 Order 객체를 Op..
· Java/Java 8
이전 글을 통해 Java8 이전에는 얼마나 null 처리가 힘들었는지 살펴보았습니다. null 관련 문제 돌아보기 런타임에 NPE(NullPointerException)라는 예외를 발생시킬 수 있습니다. NPE 방어를 위해서 들어간 null 체크 로직 때문에 코드 가독성과 유지 보수성이 떨어집니다. Java8은 이러한 함수형 언어의 접근 방식에서 영감을 받아 java.utll.Optional 라는 새로운 클래스를 도입하였습니다. Optional이란? Optional은 존재할 수도 있지만 안 할 수도 있는 객체. 즉 null이 될 수 있는 객체를 감싸고 있는 일종의 래퍼 클래스입니다. 원소가 없거나 최대 하나 밖에 없는 Collection이나 Stream으로 생각해도 좋습니다. 직접 다루기에 위험하고 까다..
· Java/Java 8
이 글에서는 Java8 Optional에 대해서 알아보도록 하겠습니다. NPE(NullPointerException) null 참조로 인해 자바 개발자들이 가장 골치아프게 겪는 문제는 널 포인터 예외(NPE)일 것입니다. 런타임 때 발생하는 NPE의 스택 트레이스에 개발자들은 많은 스트레스를 받아왔습니다. java.lang.NullPointerException at seo.dale.java.practice(OptionalTest.java:26) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at ..
?name=euichan
'Java/Java 8' 카테고리의 글 목록