ㅇ Annotation
주석이라는 뜻. 하지만 우리가 썼던 // , /* */ 같은 comment는 사람에게 정보를 전달하는것이고, Annotation은 프로그램에게 정보를 전달한다.
ㅇ 표준어노테이션
@Override - 오버라이딩하는데 실수하면 컴파일러가 알려준다.
@Deprecated - 새로운것으로 대체될때 기존의 것을 사용하지 않을 것을 권장할때 사용한다.
@SuppressWarnings - 컴파일 경고메시지 나타나지 않게 함.
@FunctionalInterface - 함수형 인터페이스의 선언이 바르게 됐는지 확인한다.
ㅇ 메타 어노테이션
@Target - 어노테이션을 적용할 대상들을 지정함.
@Documented - 어노테이션에 대한 정보가 javadoc으로 작성한 문서에 포함되게함.
@Inherited - 하위 클래스가 어노테이션을 상속받도록함.
@Retention - 어노테이션의 지속시간 결정
@Repeatable - 어노테이션을 여러번 붙힐 수 있도록 허용
ㅇ 람다식
메서드를 조금이라도 더 간단하게 표현하기 위해 사용한다. 기본적으로 반환타입과 메서드 이름을 생략가능.
반환값이 있으면 세미콜론도 생략 가능. 실행문이 한개일때는 중괄호까지 생략 가능하다. 매개변수의 타입을 유추가 가능하면 타입까지 생략 가능.
int sum(num1, num2){
return num1 + num2;
}
이런 메서드를 람다식으로 표현하면
(num1, num2) -> num1 + num2
이렇게 간단하게 표현 가능하다.
ㅇ 함수형 인터페이스
익명 클래스. 객체의 선언과 생성을 동시에 해 한개의 객체만 생성가능한 일회용 클래스이다.
1개의 추상메서드를 갖고 있는 인터페이스. 람다식도 하나의 객체이기 때문에 인터페이스에 정의된 추상메서드를 구현할 수 있다. 함수형 인터페이스엔 단 하나의 추상 메서드만 선언 가능.
ㅇ 메서드 레퍼런스
(left, right) -> Math.max(left, right);
위코드를 아래처럼 표현할 수 있다.
Math : : max;
정적메서드 참조
- - - > 클래스 :: 메서드
인스턴스메서드 참조
- - - > 참조변수 :: 메서드
ㅇ 스트림
배열, 컬렉션의 저장 요소를 하나씩 참조해 람다식으로 처리해 줄 수 있는 반복자.
다양한 데이터 소스로부터 스트림을 만들 수 있다. 다양한 메서드도 제공한다.
ㅇ 스트림의 특징
선언형으로 데이터 소스를 처리함.
람다식으로 요소 처리 코드를 제공함.
내부반복자를 사용해 병렬처리가 쉽다. (내부반복자 : 컬렉션 내부에서 요소들을 반복, 외부반복자 : 개발자가 코드로 직접 컬렉션 요소반복해 가져옴.)
중간연산과 최종연산을 할 수 있음.(중간연산 : 매핑,필터링,정력수행 최종연산 : 반복,카운팅,평균,총합)
ㅇ 파이프라인
여러개의 스트림이 연결되어있는 구조. 최종연산 제외한 나머지는 모두 중간연산 스트림.
ex)
double ageAve = list.stream() //오리지널 스트림
.fliter(m->m.getGender() == Member.MALE) //중간연산스트림
.mapToInt(Member::getAge)//중간연산스트림
.average()//최종 연산
.getAsDouble();
ㅇ 스트림 생성
stream()을 사용하면 해당 객체를 소스로 하는 Stream 반환.
읽기만 가능, 일회용이다.
ㅇ 중간연산
연산결과를 Stream으로 반환, 연속 수행가능
ㅇ 최종연산
한번만 연산 가능
'부트캠프 > 백' 카테고리의 다른 글
11.15 Thread2 (0) | 2022.11.16 |
---|---|
11.15 스레드1, JVM (0) | 2022.11.16 |
11.11 컬렉션 연습문제 (0) | 2022.11.14 |
11.10 enum, 제네릭, 예외, 컬렉션 프레임워크 (0) | 2022.11.14 |
11.8 다형성 추상화 (0) | 2022.11.09 |