목록Java8 (4)
JaeniWorld
디폴트메소드(Default methods) Java 8 이전 인터페이스는 메소드만 정의할 수 있고 내용은 구현할 수 없었다. 하지만 Java 8부터는 디폴트메소드(Default methods) 기능이 추가되면서 default를 추가하면 구현 내용을 추가할 수 있도록 변화하였다. 또한 다중상속 동작이라는 유연성을 제공해 하나의 클래스에 여러 디폴트 메소드를 상속받을 수 있게 되었다. 디폴트메소드가 쓰이는 시점 디폴트메소드는 주로 기존 공개된 API의 변경이 필요할 때이다. 이전에는 디폴트메소드가 없었기 때문에 인터페이스에 새기능을 추가하면 이를 implement받은 클래스가 모두 새로운 기능을 구현해야했는다. 하지만, 이렇게 되면 호환성 문제가 생기기 때문에 인터페이스 자체에서 기본으로 기능을 구현하여 제..

Optional 클래스 java.util.Optional라는 새로운 클레스를 제공하여 변수에 null을 할당하지 않고, Optional.empty메서드로 Optional를 반환받아 할당한다. 따라서 Optional을 사용하면 값이 없는 상황이 소유한 데이터에 문제가 있는지 아닌지알 수 없기 때문에 모든 null참조를 Optional로 대체하는 것은 옳지않다. Map과 FlatMap Optional에서의 map도 Stream의 map과 비슷한 역할로 Optional이 값을 포함하면 map의 인수로 제공된 함수가 값을 바꾼다. Flatmap역시 Stream의 것과 비슷한 역할을 지니는데 map()을 통해 변환을 하다보면 Optional와 같은 이차원 Optional을 반환한다. 이때 Flatmap을 통해 이..
Collectors Stream의 데이터를 변형 등의 처리를 하고 원하는 자료형으로 변환해줌 - 리듀싱과 요약: 최대 최소 검색, 요약연산, 문자열 연결 - 그룹화 다수준 그룹화: Collectors.groupingBy를 이용해서 항목을 다수준으로 그룹화할 수 있음. 두개의 collector사용시 두번째 컬렉터를 외부 컬렉터로 전달해 다수준 그룹화 연산을 구현할 수도 있고, 컬렉터의 인수로 컬렉터를 전다하여 계산할 수도 있다. - 분할: 분할함수(partitioning function)을 사용하는 특수한 그룹화 기능 분할함수: 비교식에 맞춰 Boolean값을 반환하며, 참과 거짓 두 요소의 스트림 리스트를 모두 유지한다. Reduce 와 collector의 차이 Reduce는 fold operation으..
Stream Process 한 번에 한 개씩 만들어지는 연속적인 데이터 항목들의 모임으로 예로 들자면 공장 라인을 들 수 있다 한 작업장에서 작업물을 받아 다음 작업을 처리할 수 있도록 넘겨주는 것이다. 이때 각각의 작업장은 다른 업무를 처리하지만 전체적으로 보았을 때, 동시간에 작업을 처리하고 한 개의 작업물 만을 작업한다. ** 데이터 처리 연산을 지원하도록 소스에서 추출된 연속된 요소 Stream예시) 입력 스트림은 데이터를 한 개씩 읽음 / 출력 스트림은 데이터를 한 개씩 기록 Stream API 스트림은 자바 8 API에 새로 추가된 기능으로 이를 이용하면 선언형으로 컬렉션 데이터를 처리할 수 있다. 기존 자바7에서 저칼로리의 요리명을 반환하고, 칼로리를 기준으로 요리를 정렬하는 코드이다. 이 ..