반응형
코드스쿼드 15일차
stream
- 스트림을 활용하면 배열이나 컬렉션뿐만 아니라 파일에 저장된 데이터도 모두 같은 방식으로 다룰 수 있다.
- 데이터 소스를 추상화하고, 데이터를 다루는데 자주 사용되는 메서드들을 정의해 놓음.
- 데이터 소스를 추상화 한다는 의미는 데이터 소스가 무엇이든 간에 같은 방식으로 다룰 수 있게 되었다는 것, 코드의 재사용성이 높아진다는 것을 의미.
- 스트림은 데이터 소스를 변경하지 않는다.
- 스트림은 일회용이다.
- 스트림은 작업을 내부 반복으로 처리한다.
람다 (lambda)
- 람다는 익명 함수의 다른 표현이다. 즉, 함수는 함수인데 이름이 없는 경우를 의미한다.
인터페이스의 메서드가 1개이면 모두 람다 표현식으로 표현이 가능하다.
@FunctionalInterface => 얘는 메서드를 하나만 가지겠다고 명시
iter 도 중복이라고 생각 (for 를 매번쓰므로)
-> forEach() : for 문을 내부적으로 가지고 있어 (for를 쓰지않아도 되니 중복제거)
함수형 인터페이스
Consumer 인터페이스
- accept(T t) 메서드 하나만 존재
람다가 없던 시절
number.forEach(new Consumer<Integer>(){
@Override
public void accept(Integer integer){
System.out.println(integer);
}
}
람다 사용 후
number.forEach(Integer integer) -> {
System.out.println(integer);
}
더 줄이면
number.forEach((integer -> System.out.println(integer));
optional
- JDK1.8부터 추가된 것으로, 지네릭 클래스로 'T타입의 객체'를 감싸는 래퍼 클래스다.
- 그래서 Optional 타입의 객체는 모든 타입의 참조변수를 담을 수 있다.
public final class Optional<T> {
private final T value;
...
}
Optional 객체를 생성할 때는 of() 또는 ofNullable() 을 사용.
참조변수의 값이 null일 가능성이 있으면 of() 대신 ofNullable() 을 사용해야함.
null 이면 NullPointerException 을 발생하기 때문.
참조변수를 기본값으로 초기화할 때는 empty() 를 사용.
OptionalInt, OptionalLong, OptionalDouble
짝 프로그래밍 실습
- 'brad' 와 짝 프로그래밍 실습을 진행
- 람다에 관한 주제
- 달라지는 부분을 인터페이스로 만들기
- 인터페이스와 람다를 이용하면 상 하 로직이 중복인데 가운데 코드만 다른경우에도 중복을 제거할 수 있다.
반응형
'코딩 교육 기관 > 코드스쿼드 백엔드 레벨2' 카테고리의 다른 글
2018.11.01 (목) (2) | 2018.11.11 |
---|---|
2018.10.25 (목) (0) | 2018.11.11 |
2018.10.22 (월) (0) | 2018.11.11 |
2018.10.17 (수) (0) | 2018.11.11 |
2018.10.15 (월) (0) | 2018.11.11 |
댓글