Stream
-
Java - InputStream & OutputStreamLanguage/Java 2023. 3. 21. 16:57
InputStream & OutputStream 데이터 입출력 프로그램에서는 데이터를 외부에서 읽고 다시 외부로 출력하는 작업이 빈번하게 일어난다. 데이터는 사용자로부터 키보드, 마우스 등을 통해 입력될 수도 있고, 파일 또는 네트워크를 통해 입력될 수도 있다. 또 반대로 데이터를 사용자에게 모니터나 파일 등으로 출력할 수도 있다. 자바 입출력과 스트림 자바에서 데이터는 스트림을 통해 입출력된다. 스트림은 단일 방향으로 연속적으로 흘러가는 것을 말하는데 물이 높은 곳에서 낮은 곳으로 흐르듯이 데이터도 출발지에서 나와 도착지로 흘러간다는 개념이다. 프로그램이 출발지냐 또는 도착지냐에 따라서 스트림의 종류가 결정된다. 프로그램이 데이터를 입력받을 때에는 입력 스트림(InputStream)이라고 부르며, 데이..
-
Java - 스트림(Stream) 최종 처리 메서드의 종류와 사용 방법(3)Language/Java 2022. 12. 1. 16:03
스트림(Stream) 최종 처리 메서드의 종류와 사용 방법(3) 요소를 그룹핑해서 수집 저번 시간에는 그룹핑을 제외한 스트림의 수집 방식에 대해 알아보았다. 이번 게시글에서는 collect() 메서드를 이용해서 그룹핑하는 방법을 알아보겠다. collect() 메서드는 단순히 요소를 수집하는 기능 이외에 컬렉션의 요소들을 그룹핑해서 Map 객체를 생성하는 기능도 제공한다. 여기서 collect() 메서드를 호출할 때 매개 변수로 groupingBy() 또는 groupingByConcurrent() 메서드를 사용하면 된다. 첫 번째는 매개변수로 Function classifier를 사용하는 groupingBy() 메서드이다. 이 메서드의 리턴 타입을 보면, Collector로, T를 K로 매핑한 후, 키가 ..
-
Java - 스트림(Stream) 최종 처리 메서드의 종류와 사용 방법(2)Language/Java 2022. 12. 1. 13:58
스트림(Stream) 최종 처리 메서드의 종류와 사용 방법(2) 최종 처리 메서드의 종류 지난 게시글에서는 수집을 제외한 최종 처리 메서드에 대해서 알아보았다. 이번 게시글에서는 수집을 사용한 최종 처리 메서드를 살펴보겠다. 수집 스트림은 요소들을 필터링 또는 매핑한 후 요소들을 수집하는 최종 처리 메서드인 collect() 메서드를 제공하고 있다. 이 메서드를 사용하면 필요한 요소만 컬렉션으로 담을 수 있고, 요소들을 그룹핑한 후 집계할 수 있다. 필터링한 요소 수집 public class Student { private String name; private Gender gender; private int score; public Student(String name, Gender gender, int ..
-
Java - 스트림(Stream) 최종 처리 메서드의 종류와 사용 방법(1)Language/Java 2022. 12. 1. 11:20
스트림(Stream) 최종 처리 메서드의 종류와 사용 방법(1) 최종 처리 메서드의 종류 중간 처리 메서드의 리턴 타입은 스트림이었던 반면, 최종 처리 메서드는 기본 타입이거나 OptionalXXX이다. 또한, 소속된 인터페이스가 Stream, IntStream, LongStream, DoubleStream에서 모두 제공된다는 의미이다. 종류로는 매칭, 집계, 루핑, 수집이 있는데 이번 게시글에서는 루핑까지만 살펴보도록 하겠다. 매칭 매칭은 최종 처리 단계에서 요소들이 특정 조건에 만족하는지 조사할 수 있도록 설계한 것이다. 비슷한 역할로는 중간 처리 단계에서 필터링이 있다. 리턴 타입은 모두 boolean이고, 메서드의 종류로는 allMatch(), anyMatch(), noneMatch()가 있다. ..
-
Java - 스트림(Stream) 중간 처리 메서드의 종류와 사용 방법Language/Java 2022. 11. 30. 17:55
스트림(Stream) 중간 처리 메서드의 종류와 사용 방법 중간 처리 메서드의 종류 위 표는 중간 처리 메서드의 종류를 나타낸 것이다. 위와 같이 리턴 타입이 스트림이라면 중간 처리 메서드이다. 또한, 소속된 인터페이스가 공통이라는 의미는 Stream, IntStream, LongStream, DoubleStream에서 모두 제공된다는 뜻이다. 종류로는 필터링, 매핑, 정렬, 루핑이 있는데 하나씩 살펴보도록 하겠다. 필터링 필터링은 중간 처리 기능으로 요소를 걸러내는 역할을 한다. 필터링 메서드에는 distinct()와 filter()가 있다. 이들은 모든 스트림이 가지고 있는 공통 메서드이기도 하다. 1. distinct() distinct() 메서드는 중복을 제거하는데, Stream의 경우 Objec..
-
Java - 스트림(Stream) 파이프라인Language/Java 2022. 11. 30. 16:45
스트림(Stream) 파이프라인 스트림 파이프라인 스트림은 데이터의 필터링, 매핑, 정렬, 그룹핑 등의 중간 처리와 합계, 평균, 카운팅, 최댓값, 최솟값 등의 최종 파이프라인으로 해결한다. 여기서, 파이프라인은 컴퓨터 과학에서 한 데이터 처리 단계의 출력이 다음 단계의 입력으로 이어지는 형태로 연결된 구조를 말한다. 최종 처리 스트림과 오리지널 스트림을 제외한 나머지 스트림은 중간 처리 스트림으로 볼 수 있다. 위의 그림을 보면 알 수 있듯이, 이전 데이터 처리의 출력이 다음 단계의 입력으로 이어진다. 좀 더 구체적으로 말하자면, 스트림 인터페이스에는 필터링, 매핑, 정렬 등의 많은 중간 처리 메서드가 있는데, 이 메서드들은 중간 처리된 스트림을 반환한다. 그리고 이 스트림에서 다시 중간 처리 메서드를..