JAVA/Java Stream 6

Map Parallel (Map 병렬처리) 방법

Map은 Thread Safe 하지 않기 때문에 병렬처리가 되지 않는다. 이를 해결하기 위해 Map.entrySet을 호출하여 처리한다. 병렬 Stream으로 선언했으나 forEach 구문 내에서는 단일 쓰레드로 처리된다. (Map 때문) historyList.parallelStream() .collect(Collectors.groupingBy(History::getBbsId)) // 조회환 history 데이터를 bbsId 별로 그룹핑 .forEach((key, value) -> { // Article 테이블 데이터 inQuery 조회 // ArticleId만 추출 List articleIdList = value.stream().map(History::getArticleId).collect(Collec..

JAVA/Java Stream 2021.03.30

Stream 객체 값 변경 예제

아래와 같이 사용하고, map().collect()를 사용하지 않아도 된다. String, Integer는 아래와 같은 방식으로는 구현이 불가능하며, map().collect()를 사용하자 static class Person{ private String name; public Person(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } } @Test void test(){ List personList = Arrays.asList(new Person("1"), new Person("2")); // 객체 값 변경 전 출력 p..

JAVA/Java Stream 2020.11.30

JAVA Stream 기본

Stream이란? 컬렉션, 배열등의 저장 요소를 하나씩 참조하며 함수형 인터페이스(람다식)를 적용하며 반복적으로 처리할 수 있도록 해준다. 파이프 라인 방식의 코딩이 가능하도록 한다 간단 코드로 맛보기 // 리스트 출력 // 기존 방식 for (Integer num : list) { System.out.println(num); } // Stream 사용 list.stream().forEach(System.out::println); // 짝수 출력 // 기존 방식 for (Integer num : list) { if(num % 2 == 0) System.out.println(num); } // Stream 사용 list.stream().filter(n -> n % 2 == 0).forEach(System...

JAVA/Java Stream 2020.06.04