본문 바로가기

JAVA/DAY 20 _ 23.09.13

Lambda5_consumer(interface)

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