Stream (3) 썸네일형 리스트형 [Java] 병렬 데이터 처리(병렬 스트림, 포크/조인 프레임워크) 병렬 처리(Parallel Operation)란 멀티 코어 환경에서 하나의 작업을 분할해 각각의 코어가 병렬적으로 처리하는 것이다. 자바7 이전에는 데이터 컬렉션을 병렬 처리하기 위해서는 데이터를 분할하고 각각의 스레드로 할당 해야한다. 하지만 스레드는 경쟁 상태(race condition)가 발생할 수 있어 동기화가 필요하고, 마지막에는 각 스레드에서 발생한 부분 결과를 하나로 합치는 과정이 필요하다. 하지만 병렬 스트림과 포크/조인 프레임워크를 사용하면 쉽게 병렬 처리가 가능하다 동시성과 병렬성 둘 다 멀티 스레드의 동작 방식이라는 점은 동일하지만 목적이 다르다. 동시성(Concurrency) 멀티 작업을 위해 멀티 스레드가 번갈아가며 실행하는 성질이다. 싱글 코어 CPU를 이용한 멀티 작업은 병렬적.. [Java] 스트림(Stream) 활용 필터링 filter filter 메소드는 Predicate를 인수로 받아 true를 반환하는 요소만을 포함하는 스트림을 반환한다 List numbers = Arrays.asList(1, 2, 3, 4, 5); numbers.stream() .filter(i -> i % 2 == 0) .forEach(System.out::println); // 2 // 4 distinct 중복을 제거한 요소를 반환한다. 중복 여부는 객체의 hashCode(), equals() 메소드로 판별한다. List numbers = Arrays.asList(1, 1, 2, 2, 3); numbers.stream() .distinct() .forEach(System.out::println); // 1 // 2 // 3 슬라이싱 Pre.. [Java] 스트림(Stream) 스트림 스트림(Stream)은 Java8부터 추가된 컬렉션(배열 포함)의 요소를 하나씩 참조해 람다식으로 처리할 수 있도록 하는 반복자이다. 데이터 처리 연산을 지원하도록 소스에서 추출된 연속된 요소 List list = Arrays.asList("A", "B", "C", "D"); // 스트림 사용❌ Iterator iter = list.iterator(); while(iter.hasNext()){ String name = iter.next(); System.out.println(name); } // 스트림 사용⭕ Stream stream = list.stream(); list.stream().forEach(name -> System.out.println(name)); 특징 선언형 선언형으로 코드를 구.. 이전 1 다음