본문 바로가기

하../java

ch14 Predicate의 결합 CF와 함수형 인터페이스

Predicate(조건식)의 결합 

- and(), or(), negete()로 두 Predicate를 하나로 결합(default메소드)

Predicate<Integer> p = i -> i < 100;
Predicate<Integer> q = i -> i < 200;
Predicate<Integer> r = i -> i%2 ==0;

Predicate<Integer> notP = p.negate(); - i>=100
Predicate<Integer> all = notP.and(q).or(r); - 100 <= i && i < 200 || i%2 ==0
Predicate<Integer> all2 = notP.and(q.or(r)); - 100 <= i && (i < 200 || i%2 ==0)

 

등가비교를 위한 Predicate의 작성에는 isEqual()를 사용(static메소드)

Predicate<String> p = Predicate.isEqual(str1); - isEquals()은 static메소드
Boolean result = p.test(str2); - str과 str2가 같은지 비교한 결과를 반환
==
boolean result = Predicate.isEqual(str1).test(str2)
		Predicate<Integer> p = i -> i < 100;
		Predicate<Integer> q = i -> i < 200;
		Predicate<Integer> r = i -> i%2 == 0;
		Predicate<Integer> notP = p.negate(); // i >= 100

		Predicate<Integer> all = notP.and(q.or(r));
		System.out.println(all.test(150));       // true

컬렉션 프레임워크와 함수형 인터페이스

- 함수형 인터페이스를 사용하는 컬렉션 프레임워크의 메소드(와일드 카드 생략)

 

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.println("{"+k+", "+v+"},"));
public static void main(String[] args) 	{
		ArrayList<Integer> list = new ArrayList<>();
		for(int i=0;i<10;i++)
			list.add(i);

		// list의 모든 요소를 출력
		list.forEach(i->System.out.print(i+","));
		System.out.println();

		// list에서 2 또는 3의 배수를 제거한다.
		list.removeIf(x-> x%2==0 || x%3==0);
		System.out.println(list);

		list.replaceAll(i->i*10); // list의 각 요소에 10을 곱한다.
		System.out.println(list);

		Map<String, String> map = new HashMap<>();
		map.put("1", "1");
		map.put("2", "2");
		map.put("3", "3");
		map.put("4", "4");

		// map의 모든 요소를 {k,v}의 형식으로 출력한다.
		map.forEach((k,v)-> System.out.print("{"+k+","+v+"},"));
		System.out.println();
	}
}
출력
0,1,2,3,4,5,6,7,8,9,
[1, 5, 7]
[10, 50, 70]
{1,1},{2,2},{3,3},{4,4},

 

 

 

 

 

 

'하.. > java' 카테고리의 다른 글

ch14 스트림 만들기  (0) 2021.12.26
ch14 스트림 스트림의 특징  (0) 2021.12.26
ch14 java.util.function 패키지  (0) 2021.12.25
ch14 함수형 인터페이스  (0) 2021.12.25
ch14 람다식 작성하기  (0) 2021.12.25