티스토리 뷰

Which of the following lambda expressions can fill in the blank? (Choose all that apply)

List<String> list = new ArrayList<>();
list.removeIf(   );

A) String s->s.isEmpty()
B) s->{return s.isEmpty();}
C) s->s.isEmpty()
D) s->{s.isEmpty()}
E) s->{s.isEmpty();}
F) (String s)->s.isEmpty()

 

removeIf() 는 Predicate를 받으며, 이것은 명시된 타입을 사용하는 하나의 파라미터의 파라미터 리스트를 가진다.
D와 E는 return 키워드가 없어서 틀리다. 람다 바디 안쪽에 중괄호({})를 사용했으면 받드시 return 키워드가 필요하다.
A는 파라미터 리스트를 감싸는 괄호가 없어서 틀리다.
추론된 타입을 가진 하나의 파라미터에 대해서만 옵셔널 하여 괄호가 없어도 된다.

Predicate 문제는 2가지만 기억하면 된다.
1. 파라미터 리스트에는 괄호가 있어야 하는데 파라미터가 1개이고 변수 선언문이 없고 변수만 있다면 괄호는 생략 가능하다. (String s) 를 s 만 사용 가능.
2. 람다 바디 형식은 {return s.isEmpty();} 이다. 하지만 {}과 return을 삭제하고 s.isEmpty()로 사용이 가능하다. 둘 중 1개만 빠져서는 사용이 안된다.

정답: B,C,F

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함