Day 66

ChangWoo·2023년 6월 10일
0

자바의 정석

목록 보기
65/71
post-thumbnail

ch 14-7,8 java.util.function패키지

java.util.function패키지(1/3)

  • 자주 사용되는 다양한 함수형 인터페이스를 제공.
  • 표준을 제공해준다는 장점이 있다.
<predicate 사용법>
predicate<String> isEmptyStr = s -> s.length() ==0;
String s = "";
if(isEmptyStr.test(s)) // if(s.length()==0)
	System.out.println("This is an empty String.");

java.util.function패키지 - Quiz

Q.아래의 빈 칸에 알맞은 함수형 인터페이스(java.util.function패키지)를 적으시오.

1.Supplier<Integer>
2.Consumer<Integer>
3.Predicate<Integer> // 원래는 Function<T,R>처럼 Predicate<Integer, Boolean>이라고 써야 하지만 반환타입이 항상 Boolean이기 때문에 Boolean은 쓰지 않는다.
4.Function<Integer,Long>

java.util.function패키지(2/3)

  • 매개변수가 2개인 함수형 인터페이스
<매개변수가 3개 이상일 >
@Functionalinterface
interface TriFunction<T,U,V,R> {
	R apply(T t, U u, V v);
}

java.util.function패키지(3/3)

  • 매개변수의 타입과 반환타입이 일치하는 함수형 인터페이스
  • UnaryOperator : 단항 연산자
  • BinaryOperator : 이항 연산자
  • 보통의 경우에는 T를 넣으면 R이 나온다. 그래서 타입을 2개 써줘야 한다.
  • 그런데 UnaryOperator는 T를 넣으면 T가 나오기 때문에 타입을 1개만 써줘도 된다.

ch 14-9~12 Predicate의 결합, CF와 함수형 인터페이스

Predicate의 결합

  • Predicate = 조건식 / 결과값이 boolean으로 나온다.
  • and(), or(), negate()로 두 Predicate를 하나로 결합(default메서드)
System.out.println(all.test(2)); // true
System.out.println(all2.test(2)); // false
  • 등가비교를 위한 Predicate의 작성에는 isEqual()를 사용(static메서드)
Predicate<String> p = Predicate.isEqual(str1) // isEquals()은 static메서드
Boolean result = p.test(str2); // str1과 str2가 같은지 비교한 결과를 반환

boolean result = Predicate.isEqual(str1).test(str2);

컬렉션 프레임웍과 함수형 인터페이스

  • 함수형 인터페이스를 사용하는 컬렉션 프레임웍의 메서드(와일드 카드 생략)
list.forEach(i->System.out,print(i+:,")); // list의 모든 요소를 출력
list.removeIf(x-> x%2==0 || x%3==0);	  // 2 또는 3의 배수를 제거
list.replaceAll(i->i*10);				  // 모든 요소에 10을 곱한다.
// map의 모든 요소를 {k,v}의 형식으로 출력
map.forEach(k,v) -> System.out.print("{+k+","+v+"},"));
profile
한 걸음 한 걸음 나아가는 개발자

0개의 댓글