티스토리 뷰

java stream map reduce(자바 스트림 맵 리듀스)

2004년 구글이 맵리듀스 심플리파이드 데이터 프로세싱 온 라지 클러스터스(MapReduce: Simplified Data Processing on Large Clusters)라는 논문을 발표하면서 '빅데이터'라는 키워드가 등장함과 동시에 '맵리듀스'라는 키워드도 같이 이슈가 되기 시작하였다.

해당 논문은 아래 링크

https://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf

자바8에서 stream()이 나오면서 이 스트림 안에서 .map()과 .reduce()를 사용할 수 있게 되었다.

맵( .map() )은 스트림안에있는 데이터들을 특정 연산을 수행한 결과 전체를 돌려준다.

@Test
public void list() throws Exception {
    String[] list = {"1", "2", "3"};
    int sum = Arrays.stream(list)
            .map(item -> Integer.parseInt(item))
            .reduce(0, (a, b) -> a + b);
    System.out.println(sum);
}

위 코드에서 list에 string형으로 되어있는 숫자들은 .map에서 숫자로 바꾸어서 돌려준다.

리듀스( .reduce() )는 map안에 있는 데이터들을 처리해서 값으로 만들어준다.

Java Pojo bean에서 특정 값만 빼서 합계 구하기

reduce, filter, findAny 등을 사용해서 값을 추출해 구한다.

List<BasketballScore> basketballScores = game.getGameTeams()
                        .stream().filter(item->"home".equals(item.getLocationType())).findAny()
                        .get().getScores()
                        .stream().map(score -> (BasketballScore) score).collect(Collectors.toList());
//스코어 합계 구하기
int scoreSum = basketballScores.stream()
              .map(score->score.getScore())
              .reduce(0, (a, b)->a +b);

System.out.println(scoreSum);

//1q만 추출하기
BasketballScore querter1 = basketballScores.stream()
               .filter(basketballScore -> basketballScore.getQuarter() == 1).findAny().get();
System.out.println(querter1);

Java8 Stream Max구하기

maxSequence = gameBroadcasts.stream()
                    .map(item -> item.getPlayId())
                    .max(Long::compare).get();

end.

'Language > JAVA' 카테고리의 다른 글

JsonNode에서 .stream() 쓰기  (0) 2017.10.27
gradle multi project구조에서 sub project 빌드 하는 법  (0) 2017.10.18
Java List사용법  (0) 2017.07.24
ScheduleTreadPoolExecutor 사용법  (0) 2017.03.20
java ScheduleThread 예제  (0) 2017.01.20
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함