-
[JAVA8]Stream 맛보기JAVA/in 기초 2014. 12. 2. 10:04728x90
JAVA8에서 추가된 Stream 인터페이스는 많은 기능을 제공 합니다.
특히 정렬, 필터, 통계 등을 람다(LAMBDA)표현식을 이용하여 간단하게 표출 하도록 도와 줍니다.
JAVA 5,6,7 에서의 방식
List<Human> humanList = initialList(); //남자인 사람의 수 int manCount = 0; for(Human h : humanList){ if(h.isMan() ){ manCount ++; } } //10세 이하인 사람의 나이 합산 int below10_totalAvg = 0; for(Human h : humanList){ if(h.getAge() < 10 ){ below10_totalAvg += h.getAge(); } } assertEquals(below10_totalAvg, 4);
JAVA 8 에서의 방식
List<Human> humanList = initialList(); Comparator<Human> byHumanSort = (be1, be2) -> Integer.compare(be1.getAge(), be2.getAge()); //남자인 사람의 수 long manCount = humanList.stream() .filter(h -> h.isMan()) .count(); assertEquals(manCount, 2L); //10세 이하인 사람의 나이 합산 int condition = 10; int below10_totalAvg = humanList.stream() .filter(h -> h.getAge() < condition ) .sorted(byHumanSort)//의미 없지만 정렬도 추가해봤음! .mapToInt(Human::getAge) .sum(); assertEquals(below10_totalAvg , 4);
개인적인 생각은 JAVA8에서 좀 더 직관적이고 추후 여러 조건(예를 들어 정렬이나 다른 필터) 시 좀 더 유용하게 이용될 것이라 생각 된다.
참고 URL :
reference : https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html
정렬 관련 다른 POST : http://www.leveluplunch.com/java/tutorials/007-sort-arraylist-stream-of-objects-in-java8/#multiple-comparators
LAMBDA 관련 : https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html
728x90'JAVA > in 기초' 카테고리의 다른 글
[발번역]언제 ArrayList 대신 LinkedList을 쓰나요? (0) 2014.12.25 [JAVA8]자바의 다중 상속 관련 내용 (0) 2014.12.19 스레드 기본(3) (0) 2014.03.05 스레드 기본(2) (0) 2014.03.05 static 변수는 하나의 프로세스에서 하나의 값만 가진다. (0) 2014.03.05