Collection | List | ArrayList |
---|---|---|
추상체 | <-> | 구상체 |
~().~().~();
메소드가 .
으로 계속 연결되는 방식데이터 묶음을 풀어서 하나씩 처리할 수 있는 수단 제공
각 데이터 한 건마다 map()
, filter()
, foreach()
등을 할 순 없음.
다음 데이터와 데이터의 끝을 알 수 있다. 역방향으로는 불가
예제
List<String> list = new ArrayList<>(Arrays.asList("A","AB","ABC","ABCD"));
Iterator<String> iter = list.iterator();
while (iter.hasNext()) {
System.out.println(iter.next());
}
Collections.stream()
: 컬렉션 안의 데이터를 연속된 흐름으로서 취급예제
Stream<Integer> s = Arrays.asList(1, 2, 3).stream();
int[] arr = s
.filter(i -> i > 3)
.mapToInt(i -> i)
.toArray();
map()
: Object -> Object / mapToInt()
: Object -> primitive / boxed()
: primitive -> Objectnull
을 사용하지 않는 방법EMPTY
객체Optional
: null일 수도 있고 아닐 수도 있는 객체를 wrapping해서 운반예제
Optional<User> optionalUser = Optional.empty(); // null
optionalUser = Optional.of(new User()); // not null
optionalUser.ifPresentOrElse(user1 -> {
// do something when it is present
}, () -> {
// do something else when it is empty
});