Stream데이터를 담고 있지 않다. 스트림은 데이터 처리 작업이 주요 목적이다.데이터를 저장하지 않고 그저 어떻게 다룰지를 논하는 것이다. 스트림은 데이터 원소의 유한 혹은 무한 시퀀스를 뜻한다. 스트림 파이프라인은 이 원소들로 수행하는 연산 단계를 표현하는 개념이다. Stream 의 단순한 문법보단 중요한 개념과 주의점에 대해 살펴보자 스트림과 스트림 파이프라인스트림 파이프라인은 소스 스트림에서 시작해 종단 연산으로 끝나며, 그 사이에 하나 이상의 중간 연산이 있을 수 있다. 단어에 대해 간단히 표현하자면중간 연산 : 스트림을 반환하는 연산종단 연산 : 스트림을 반환하지 않는 연산 이다. 예를 들어, filter, map 등등은 중간 연산이고 collect, toArray, forEach 등등은 ..
Java/Java 8
등장 배경 (Optional 사용 이유)우리는 항상 NullPointerException 과 가까이 있다. 조금만 신경을 안써도 NPE 가 나타날 수 있다. 예를 들어public class Main { public static void main(String args[]) throws Exception { Member member = new Member(); String name = member.getBoard().getTitle; // Board 가 없다면?? }} getBoard() 에서 Board 객체가 없을 경우 NullPointerException 가 발생하게 된다. 그렇다면 이 문제를 어떻게 해결해야 할까? 해결 방법 (자바 8 이전)p..
함수형 인터페이스 : 추상 메서드가 1개인 인터페이스 함수형 인터페이스는 '추상 메서드가 1개인 인터페이스' 라는 조건만 성립하면 되기에 default method 가 추가되어도 상관없다. @FunctionalInterfacepublic interface FuncInterface { int plusTen(int num); //abstract 자동 생략 default void printHello() { System.out.println("Hello"); } default void printHiHello() { System.out.println("HiHello"); }} @FunctionalInterface 라는 애노테이션은 함수형..
기존 인터페이스와 자바8의 인터페이스에는 큰 차이가 있다.default method 와 static method 의 허용이 대표적인데 라이브러리들을 크게 변화시킨 default method에 대해 알아보자. 기존의 인터페이스인터페이스public interface OldInterface { void printHi(); void printHello();} 구현체public class OldClass implements OldInterface{ @Override public void printHi() { System.out.println("Hi"); } @Override public void printHello() { System.out.pri..