본문 바로가기

분류 전체보기60

Java - 스트림(Stream) 스트림이란 '데이터 처리 연산을 지원하도록 소스에서 추출된 연속된 요소' 스트림은 컬렉션 보다 개념적으로 높은 수준의 데이터 뷰 역할을 하며, 이를 이용하면 좀 더 직관적으로 계산을 명시할 수 있다. 선언형으로 코드를 구현할 수 있다. 즉 루프와 if 조건문 등의 제어 블록을 사용해서 어떻게 구현할 지 지정할 필요 없이 '저칼로리의 요리만 선택하라' 같은 동작의 수행을 지정할 수 있다. 루프에서는 연산 순서를 자세히 작성해야 하지만, 스트림은 결과만 맞으면 원하는 방식으로 연산을 스케줄링 할 수 있다. 메서드 이름을 보면 코드가 무엇을 의도하는 지 바로 알 수 있다. 스트림을 이용하면 멀티스레드 코드를 구현하지 않아도 데이터를 병렬로 처리할 수 있다. 데이터의 소스와 프로퍼티를 지정하면 스트림 라이브러리.. 2017. 3. 2.
Java - 함수형 인터페이스(Predicate) 합성 and(), or(), negate()로 두 Predicate를 하나로 합성할 수 있다. Predicate p = i -> i i i%2 == 0; Predicate notP = p.negate(); // i >= 10 Predicate all = notP.and(q).or(r); // 10 2017. 3. 1.
Java - 함수형 인터페이스(Function) 합성 andThen, compose Function f = (s) -> Integer.parseInt(s); Function f2 = (i) -> i.toString() + "dddd"; Function result = f.andThen(f2); // f + f2 → result Function result2 = f2.compose(f); // f + f2 → result System.out.println(result.apply("99")); //99dddd System.out.println(result2.apply("99")); //99dddd 2017. 2. 28.
Java - 기본형을 사용하는 함수형 인터페이스 인터페이스 메서드 설명 DoubleToIntFunction int applyAsInt(double d) aTobFunction a는 입력 b는 리턴 ToIntFunction int applyAsInt(T d) ToaFunction a는 입력 리턴은 제네릭 IntFunction T applyAsInt(int d) aFunction 리턴이 제네릭 ObjIntCunsumer void applyAsInt(T d, int i) 입력에 제네릭, int 리턴은 없다 Supplier s = ()->(int)(Math.random()*100); static void makeRandomList(Supplier s, List list) { for(int i=0;i(int)(Math.random()*100); static v.. 2017. 2. 27.