본문 바로가기
728x90

java 812

Chapter 6. 스트림으로 데이터 수집 중간 연산은 파이프라인을 구성해 스트림의 요소를 소비(consume)하지 않는다. 반면 최종 연산은 스트림의 요소를 소비해 최종 결과를 도출한다. 최종 연산은 스트림 파이프라인을 최적화해 계산 과정을 짧게 생략하기도 한다. 컬렉터란 무엇인가? 최종 연산인 collect 메서드는 Collector 인터페이스의 구현을 전달받아 스트림의 요소를 어떤 식으로 도출할지 지정한다. 예를 들어 .collect(Collectors.toList())에서 toList는 스트림을 리스트로 변환해 Collector를 반환한다. 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 // Stream interface 의 collect R collect(.. 2022. 3. 1.
String Java의 String은 두 가지 방법으로 생성할 수 있다. 하나는 new를 통한 생성이고 하나는 리터럴을 통한 생성이다. 1 2 String str1 = "hello"; // 리터럴을 사용한 생성 String str2 = new String("hello"); // new를 통한 생성 cs 이 두 방식은 겉보기에는 같지만 리터럴은 String 값이 Heap 메모리 내의 Constant Pool에 저장되어 재사용 된다는 차이가 있다. 따라서 두 방식으로 할당한 같은 문자열들을 비교하면 new 연산은 주소값이 다르기 때문에 다음과 같은 결과를 얻는다. 1 2 3 4 5 6 7 8 9 10 11 12 // 리터럴을 사용한 선언 String str1 = "hello"; String str2 = "hello"; .. 2022. 2. 26.
5장. 스트림 활용 스트림은 내부 반복을 사용하고 있기 때문에 스트림 API가 내부에서 데이터를 처리하는 방식을 관리한다. 따라서 내부적으로 다양한 최적화가 이루어질 수 있다. 이번 장에서는 자바 8, 9에서 추가된 스트림 연산을 살펴본다. 필터링 스트림에서 필요한 요소만 선택하는 방법이다. 프레디케이트로 필터링 스트림 인터페이스에서 지원하는 filter 메서드는 프레디케이트를 인수로 받아 프레디케이트와 일치하는 요소를 포함하는 스트림을 반환한다. 1 2 3 4 List oddNumbers = numbers.stream() .filter(number -> number % 2 != 0) .collect(toList()); Colored by Color Scripter cs 고유 요소 필터링 고유(unique)한 값만 추출하길.. 2022. 2. 18.
4장 스트림 소개 많은 자바 애플리케이션에서 컬랙션을 사용한다. 하지만 컬랙션 관련 연산들은 연산을 통해 기대하는 것에 집중하기 보다는 구현을 어떻게 할지를 명시해야 한다. 또 한 많은 요소를 포함한 컬랙션을 처리할 경우 병렬 처리가 효과적이지만 병렬 처리 코드를 구성하는 것은 단순 반복 처리 코드에 비해 복잡하고 디버깅이 어렵다. 이런 문제들에 대한 해결책이 스트림이다. 스트림이란 무엇인가? 스트림을 이용하면 선언형으로 컬렉션 데이터를 처리할 수 있고 멀티스레드 코드를 구현하지 않아도 데이터를 투명하게 병렬로 처리할 수 있다. 또 한 여러 빌딩 블록 연산을 연결해 복잡한 데이터 처리 파이프라인을 만들 수 있다. 연산이 복잡함에도 가독성은 유지된다. 스트림에서 filter 같은 연산은 고수준 빌딩 블록(high-level.. 2022. 2. 16.
728x90