Collection : List, Set 인터페이스가 상속하는 인터페이스.
List와 Set 인터페이스를 구현하는 클래스의 객체들을 다루는 method를 정의함.
Iterator : Collection 인터페이스를 상속하는 Iterable 인터페이스에 선언된 Abstract method. List, Set, Queue 인터페이스가 Collection을 상속하고 이들을 구현하는 클래스가 iterator()를 구현함.
데이터의 묶음을 traverse하며 next(), remove(), hasnext()를 제공하는 Iterator 인터페이스를 구현한 클래스의 객체를 반환함.
Stream : 데이터 소스마다 API가 따로 있는데, 데이터 소스를 추상화하여 다루는 방식을 제공함.
Iterator와 마찬가지로 데이터 소스로 부터 데이터를 읽기만 하고, 요소를 모두 읽고 나면 Stream이 닫혀서 사용 불가.
데이터에 여러 연산을 적용한 Stream을 얻을 수 있고 코드 길이도 짧음.
Optional : null 객체 - nullPointerException 문제를 해결해주는 기능(Optional.empty()로 비어있는 static, singleton 객체 사용). Optional로 원본 객체를 감싼다.
Stream과 Optional.
Optional이 말로만 듣던 nullPointerException을 해결하는 기능이었다.
8월 5일 TIL이지만 3일이 지난 지금 적는다.
그때는 강의만 들었고 이해도가 낮았는데, 지금 책을 읽으면서 생각을 정리하니 좀 더 이해가 된다.
아무래도 8/4 강의의 Functional Interface -> 익명 클래스(객체) -> Lambda Expression이 8/5 강의 내용을 이해하는데 필요했지만 아직 익숙하지 않아서 머리에서 정리가 안됐다.
이해하는데에 시간이 많이 걸렸지만, 이해하게 된 것에 의미를 둔다. 어렵게 이해한 개념이니 주기적으로 복습해서 익혀야 겠다.