티스토리 뷰

Back-end/Java

스트림

douStory 2021. 8. 10. 17:04
728x90

데이터 처리 기능을 구현한 클래스, 람다식과 함께 사용한다.

 

중간연산과 최종연산으로 나누어 진다.

최종연산이 끝나면 스트림은 더이상 사용할 수 없습니다.

중간연산
최종연산

package streamDemo;

public class Book {
	public String name;
	public int price;
	
	//Book생성자
	Book(String name, int price) {
		this.name = name;
		this.price = price;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getPrice() {
		return price;
	}

	public void setPrice(int price) {
		this.price = price;
	}
	
	public String toString() {
		return "이름 : " + name + " | price : " + price;
	}
	
}
package streamDemo;

import java.util.ArrayList;
import java.util.List;

public class LibraryTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		//List 생성
		List<Book> bookList = new ArrayList<>();
		
		bookList.add(new Book("자바",25000));
		bookList.add(new Book("파이썬",15000));
		bookList.add(new Book("안드로이드",30000));
		
		System.out.println("===2만원 이상인 책들은 다음과 같습니다===");
		
		//스트림 생성. 2만원 이상인책 필터. 책이름들 가져오기. 정렬. 출력
		bookList.stream().filter(c->c.getPrice() >= 20000).map(c-> c.getName()).sorted().forEach(s->System.out.println(s));
		
		bookList.stream().filter(c->c.getPrice() >= 20000).map(c->c.name).sorted().forEach(s->System.out.println(s));
		
		//스트림은 원본을 건들지 않습니다.
		bookList.stream().forEach(s->System.out.println(s));
		
		//최종연산
//		forEach(): 요소를 하나씩 꺼내는 기능 
//		count() : 요소의 개수
//		sum() : 전체의 합계를 구함
//		
//		//중간연산
//		filter() : 조건을 넣고 참인 경우만 필터
//		map() : 해당자료만 가지고 올때
	}	
}

'Back-end > Java' 카테고리의 다른 글

JAVA  (0) 2021.08.10
람다(Lambda)  (0) 2021.08.10
스레드  (0) 2021.08.10
내부 클래스  (0) 2021.08.10
컬렉션 프레임 워크(Map)  (0) 2021.08.09
댓글