Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- implement
- Stack
- java
- SQL
- 코딩테스트
- Binary Search
- Class
- Math
- dynamic programming
- database
- Binary Tree
- two pointers
- 구현
- string
- bit manipulation
- Tree
- geometry
- 자바
- simulation
- greedy
- Data Structure
- Number Theory
- Matrix
- Method
- sorting
- 코테
- Counting
- hash table
- 파이썬
- array
Archives
- Today
- Total
코린이의 소소한 공부노트
스트림 생성하기 본문
1. 컬렉션으로부터 스트림 생성하기
// Coolection 인터페이스의 메서드
Stream<E> stream()
List<Integer> list = Arrays.asList(1,2,3,4,5);
Stream<Integer> intStream = list.stream(); // List를 스트림으로 변환
// 스트림의 모든 요소 출력
intStream.forEach(System.out::print);; // 12345
intStream.forEach(System.out::print);; // 에러. 이미 스트림이 닫혔다.
// intStream = list.stream(); 을 이용해 다시 만든 후
// forEach()를 사용하면 된다.
2. 배열로부터 스트림 생성하기
// 1) 객체 배열로 스트림 만들기
Stream<String> strStream = Stream.of("a","b","c"); // 가변 인자
Stream<String> strStream = Stream.of(new String[] {"a","b","c"});
// 배열을 매개변수로 넣을 때 new 연산자를 꼭 넣어줘야 한다.
Stream<String> strStream = Stream.of({"a","b","c"}); // 에러
// 두 줄로 나눠서 쓰는 것도 가능하다.
String[] arr = {"a","b","c"};
Stream<String> strStream = Stream.of(arr); // OK
Stream<String> strStream = Arrays.stream(new String[] {"a","b","c"});
Stream<String> strStream = Arrays.stream(new String[] {"a","b","c"}, 0, 3);
// 배열의 [0, 3)번째 요소까지를 스트림으로 변환
// 2) 기본형 배열로 스트림 만들기
IntStream intStream = IntStream.of(1,2,3); // 가변 인자
IntStream intStream = IntStream.of(new int[] {1,2,3});
IntStream intStream = Arrays.stream(new int[] {1,2,3});
IntStream intStream = Arrays.stream(new int[] {1,2,3}, 0, 3);
// 배열의 [0, 3)번째 요소까지를 스트림으로 변환
3. 특정 범위의 정수를 요소로 갖는 스트림 생성하기
// IntStream, LongStream이 사용 가능한 메서드
IntStream intStream = IntStream.range(1, 5); // 1,2,3,4
IntStream intStream = IntStream.rangeClosed(1, 5); // 1,2,3,4,5
4. 난수를 요소로 갖는 스트림 생성하기
IntStream intStream = new Random().ints(); // 무한 스트림 생성
intStream.limit(5).forEach(System.out::println); // 5개의 요소만 출력한다.
// limit()이 없다면 난수를 무한으로 출력한다.
IntStream intStream = new Random().ints(5); // 크기가 5인 난수 스트림을 반환
// Random클래스의 메서드들이 생성하는 난수의 범위
Integer.MIN_VALUE <= ints() <= Integer.MAX_VALUE
Long.MIN_VALUE <= longs() <= Long.MAX_VALUE
0.0 <= doubles() < 1.0
// 지정된 범위의 난수를 요소로 갖는 스트림을 생성하는 메서드. end는 포함되지 않는다.
// 무한 스트림
IntStream ints(int begin, int end)
LongStream longs(long begin, long end)
DoubleStream doubles(double begin, double end)
// 유한 스트림
IntStream ints(long streamSize, int begin, int end)
LongStream longs(long streamSize, long begin, long end)
DoubleStream doubles(long streamSize, double begin, double end)
5. 람다식을 소스로 하는 스트림 생성하기
static <T> Stream<T> iterate(T seed, UnaryOperator<T> f) // 이전 요소에 종속적. 무한 스트림
static <T> Stream<T> generate(Supplier<T> s) // 이전 요소에 독립적. 무한 스트림
// iterate()는 이전 요소를 seed로 해서 다음 요소를 람다식으로 계산한다.
Stream<Integer> evenStream = Stream.iterate(0, n->n+2); // 0,2,4,6,...
// generate()는 seed를 사용하지 않는다.
Stream<Double> randomStream = Stream.generate(Math::random); // 메서드 참조
Stream<Integer> oneStream = Stream.generate(()->1); // 계속 1이 나오는 스트림
6. 파일을 소스로 하는 스트림 생성하기
Stream<Path> Files.list(Path dir) // Path는 파일 또는 디렉토리
Stream<String> Files.lines(Path path) // 파일 내용을 라인 단위로 읽어서 String으로 바꿈
Stream<String> Files.lines(Path path, Charset cs)
Stream<String> lines() // BufferedReader클래스의 메서드
7. 비어있는 스트림 생성하기
Stream emptyStream = Stream.empty(); // 빈 스트림 생성
long count = emptyStream.count(); // 0. 빈 스트림이기 때문에 당연한 결과
'Java' 카테고리의 다른 글
Optional 클래스 (0) | 2023.02.07 |
---|---|
스트림의 중간 연산 (0) | 2023.02.07 |
스트림의 정의와 특징 (0) | 2023.01.30 |
람다식과 메서드 참조 (0) | 2023.01.13 |
function 패키지와 메서드 (0) | 2023.01.12 |