20/11/19

아라·2020년 11월 19일
1

국비교육

목록 보기
28/30
// 파이프라인(Pipe Line)
	// 여러 개의 스트림이 연결되어 있는 구조
	// - 배열 -> 스트림(중간조작) -> 스트림(중간조작) -> 스트림(최종소비)
	// - 중간 처리 : 필터링(filter), 매핑(map), 정렬, 그룹핑 등
	// - 최종 처리 : 합계, 평균, 카운트(count), 최댓값, 최솟값, forEach 등

private static void m2() {
	// 정렬
	// - 중간 처리
	// - sorted()

	List<Integer> list=Data.getIntList(10);

	list.stream().forEach(n->System.out.print(n+", "));
	System.out.println();

	list.stream().sorted().forEach(n->System.out.print(n+", "));
	System.out.println();

	// 스트림+Comparator
	list.stream().sorted(new Comparator<Integer>() {
		public int compare(Integer o1, Integer o2) {
			return o1-o2;
		};
	}).forEach(n->System.out.print(n+", "));
	System.out.println();

	// 스트림+람다
	list.stream().sorted((o1, o2)->o1-o2)
   		 .forEach(n->System.out.print(n+", "));
	System.out.println();

	// 스트림+람다(내림차순)
	list.stream().sorted((o1, o2)->o2-o1)
    		.forEach(n->System.out.print(n+", "));
	System.out.println();
	
	// 미리 만들어져있는 내림차순 Comparator를 이용
	list.stream().sorted(Comparator.reverseOrder())
    		.forEach(n->System.out.print(n+", "));
	System.out.println();

	// 중복값 제거 + 오름차순 정렬 + 짝수만
	list.stream()
		.filter(num->num%2==0)
		.distinct()
		.sorted()
		.forEach(num->System.out.print(num+", "));

	Data.getItemList().stream()
		.filter(item->item.getColor()==Color.BLACK)
		.sorted((o1, o2) -> o1.getSize()-o2.getSize())
		.forEach(item->System.out.println(item));
}
	
private static void m1() {
	// 필터링
	// - filter()
	// - 조건에 따라 일부 요소들을 걸러내는 역할
	// - 조건에 만족하는 요소들만 남기고 불만족하는 요소들을 버린다.

	List<Integer> nums=Data.getIntList(20);
	System.out.println(nums);

	// 짝수만 출력
	// 아래처럼 하는 방식은 권장하는 방식은 아님 -> 필터를 사용할 것!
	nums.stream().forEach(n->{
		if (n%2==0) {
			System.out.print(n+", ");
		}
	});

	// 필터를 사용하여 짝수만 출력(권장하는 방법)
	// -> 중간처리는 다른 스트림 Return, 최종처리는 void Return
	nums.stream().filter(num->num%2==0)
    		.forEach(num->System.out.print(num+", "));
	Data.getUserList().stream()
    		.filter(user->user.getGender()==1)
            	.forEach(user->System.out.println(user));
	System.out.println();
		
	Data.getUserList().stream()
    		.filter(user->user.getHeight()>=170&&user.getWeight()<=75)
            	.forEach(user->System.out.println(user));
	System.out.println();

	// 아래가 좀 더 스트림다운 코드(***)
	Data.getUserList().stream()
    		.filter(user->user.getHeight()>=170)
            	.filter(user->user.getWeight()<=75)
                .forEach(user->System.out.println(user));
	System.out.println();

	Data.getItemList().stream()
    		.filter(item->item.getColor()==Color.YELLOW)
       		.filter(item->item.getDate().get(Calendar.DAY_OF_WEEK)==7)
        	.forEach(item->System.out.println(item));
	System.out.println();
}

0개의 댓글