나누고 싶은 개발 이야기

Data Engineer로서 기록하고 공유하고 싶은 기술들. 책과 함께 이야기합니다.

Java8 3

[Java8] sorted groupBy

이번에는 간단한 주제로 글을 짧게 남겨보고자 한다. stream의 groupBy와 관련된 내용이다. 개발을 하다가 List에 있는 객체의 특정 값으로 groupBy를 했다. 문제는 groupBy된 결과가 group key로 사용한 값의 순서로 정렬이 되지 않은 부분이다. 데이터 가공의 결과로 group key 값으로 정렬을 해줘야 사용하는 측에서 용이했기 때문이다. 관련해서 java doc을 찾아보았더니 같은 groupBy 함수에서 argument가 다른 함수가 존재했다. public static Collector groupingBy( Function

Language/Java 2019.01.11

[Java8] 람다란 무엇인가?

Java8의 추가된 큰 기능 중 하나로 람다를 첫번째로 든다. 그러면 람다란 무엇일까? 정리해보자. 람다를 한마디로 표현하면 메서드로 전달할 수 있는 익명 클래스를 단순화한 표현식이다. 익명클래스(anonymous class)는 무엇인가? 익명클래스는 이름이 없는 로컬 클래스 입니다. 익명 클래스는 new 연산자를 사용하여 하나의 간결한 표현식으로 정의되고 인스턴스화된다. 로컬 클래스는 Java 코드 블럭이지만 익명클래스는 표현식이므로 메서드 호출과 같은 표현식의 일부로 포함될 수 있다. 아래 코드를 살펴보면 Thread를 생성할 때, 파마미터로 익명클래스를 생성해서 전달함을 볼 수 있다. public class ThreadTest { public static void main(String[] args)..

Language/Java 2017.08.09

[Java8] CompletableFuture 정리

기존 Future 인터페이스는 비동기 계산의 결과로 제공하기 위해 Java5에서 추가되었지만, 이런 계산들을 결합하거나 오류를 처리할 방법이 없었다. 그래서 Java 8에서 CompletableFuture가 추가되었다. CompletableFuture은 Future 뿐만 아니라 CompletionStage도 상속하는데, CompletionStage의 특징을 살펴보면 CompletableFuture의 장점을 알 수 있다. CompletionStage는 결국은 계산이 완료될 것이라는 의미의 약속이다.계산의 완료는 단일 단계의 완료 뿐만 아니라 다른 여러 단계 혹은 다른 여러 단계 중의 하나로 이어질 수 있음도 포함한다. 뿐만 아니라 각 단계에서 발생한 에러를 관리하고 전달할 수 있다. 지금부터 Complet..

Language/Java 2017.08.09
반응형