JAVA8 API에 새로 추가된 기능.
스트림을 이용하면 멀티스레드 코드를 구현하지 않아도 데이터를 투명하게 병렬로 처리할 수 있다.
JAVA8의 스트림 API의 특징
스트림이란?? : 데이터 처리 연산을 지원하도록 소스에서 추출된 연속된 요소.
주요 특징 2가지
//menu 리스트를 순회하면서 dish의 name을 가져와라..!!
for(Dish dish : menu){
dish.getName();
}
//데이터 표현과 하드웨어를 활용한 병렬성 구현을 자동으로 선택한다. 반면 외부 반복에서는 병렬성을 스스로 관리해야 한다.(synchronized)
menu.stream()
.map(Dish::getName)
.collect(toList());
List<String> names = menu.stream()
.filter(dish -> {
System.out.println("filtering " + dish.getName());
return dish.getCalories() > 300;
})
.map(dish -> {
System.out.println("mapping " + dish.getName());
return dish.getName();
})
.limit(3)
.collect(toList());
System.out.println(names);
filtering:port
mapping:pork
filtering:beef ....
mapping:beef