List<String> list = new ArrayList<>();
list.add("안녕1");
list.add("안녕2");
list.add("안녕3");
list.add("안녕4");
list.add("안녕5");
// 원래는 내가 foreach를 만들어서 돌리겠지?
// interface consumer
// 1. list.forEach(이 괄호 안에 : consumer 인터페이스를 상속받은 클래스의 인스턴스를 넣으면 된다);
list.forEach(new QQQ());
// --> 방법1_비추천) QQQ 클래스를 forEach에 넣어서, 그안에있는 메서드들을 순차적으로 실행시켜준다
//2. consumer라는 인터페이스가 뭔지는 모르겠지만 일단 상속받아야되니까 쓰자
// 2-1) 원래는 Consumer에서 선언된 메서드가 뭔지모르니까 오버라이딩하려면 찾아봐야겠지만..
// --> 요즘은 마우스클릭한번이면 알아서 만들어 준다구...^^
class QQQ implements Consumer<String>{
@Override
public void accept(String t) {
System.out.println(t);
}
}
**consumer 인터페이스
# 특징
// 제네릭 타입 T를 받아들이고, void accept(T t) 메서드를 정의합니다.
// 이 메서드는 입력으로 주어진 값을 받아서 어떤 동작을 수행하도록 구현되어야 함
// --> 사용자가 뭘 소비하든 내알빠아니야. 일단나는 메서드 호출할거야....
// ★★★ accept 메서드 하나만 가지고 있으므로 람다식으로 표현할 수 있다!!! --> 이게 포인트임.
# 활용
// Consumer는 입력 값을 소비하고 반환하지 않는 동작을 정의함
// --> 주로 데이터를 변경하지 않고 출력하거나 다른 작업을 수행할 때 사용한다!
// foreach매서드의 () 안에는 consumer 인터페이스를 상속받은 클래스의 인스턴스를 넣으면 되는데,
// --> 그때의 메서드는 aceept한개로, 람다식을 활용하기 아주좋다!!!!
// 방법2) 람다식
list.forEach((t)->{
System.out.println(t);
});
// 방법3_추천) 람다식활용
list.forEach(t->System.out.println(t));
// t가 list를 돌거야(= forEach) -> 프린트도 반복되겠찌
// 방법4) 매서드참조
list.forEach(System.out::println);
'JAVA > DAY 20 _ 23.09.13' 카테고리의 다른 글
IntStream (0) | 2023.09.13 |
---|---|
Stream_API (0) | 2023.09.13 |
Lambda4_메서드참조 (0) | 2023.09.13 |
Lambda3_구현코드가 한줄일때 활용법 (0) | 2023.09.13 |
Lambda2 (0) | 2023.09.13 |