JAVA 8에서는 3개의 기본형 Stream 인터페이스를 제공한다.
▪ IntStream
▪ DoubleStream
▪ LongStream
IntStream 메서드
☑ range()
▪ 처음, 끝 수가 인자로 들어간다. 이때 끝 수는 포함되지 않는다.
▪ 처음에서 끝 사이의 integer를 차례대로 스트림으로 방출한다.
import java.util.stream.IntStream;
IntStream intStream = IntStream.range(1, 11);
IntStream.range(1, 11).forEach(x -> System.out.print(x + " ")); // 출력결과 : 1 2 3 4 5 6 7 8 9 10
중간 연산 메서드
☑ map()
▪ 입력으로 들어온 요소들을 각각 매핑 시켜주는 역할
▪ Function<T, R>이 사용되고 있는데 T가 변환 전 타입 R이 변환 후 타입
▪ 람다식 표현으로 사용할 수 있다.
☑ boxed()
▪ IntStream 인터페이스에 정의된 메서드 중 하나로, 각 원소들이 Integer로 매핑된 Stream을 반환해준다.
▪ 위의 원시 타입에 대한 스트림 자원을 클래스 타입으로 전환해준다.
int[] -> Integer[]
public static void main(String[] args) {
int[] num = {1, 2, 3};
// 1. int[] -> IntStream (원시 형태 스트림)
IntStream intStream = Arrays.stream(num);
// 2. IntStream -> Stream<Integer>
Stream<Integer> boxedToInteger = intStream.boxed();
// 3. Stream<Integer> -> Integer[]
Integer[] integerArray = boxedToInteger.toArray(Integer[]::new);
System.out.println(Arrays.toString(integerArray));
// one line
Integer[] oneLineResult = Arrays.stream(num)
.boxed()
.toArray(Integer[]::new);
System.out.println(Arrays.toString(oneLineResult));
}
☑ collect()
Stream의 데이터를 변형 등의 처리를 하고 원하는 자료형으로 변환해준다.
▪ Stream의 데이터들을 List 또는 Set 자료형으로 변환해준다.
Stream의 데이터로 HashSet 리턴하기
int[] -> Set<Integer> : 원시 타입
public static void main(String[] args) {
int[] num = {1, 2, 3};
// 1. int[] -> IntStream (원시 형태 스트림)
IntStream intStream = Arrays.stream(num);
// 2. IntStream -> Stream<Integer>
Stream<Integer> boxedToInteger = intStream.boxed();
// 3. Stream<Integer> -> Set<Integer>
Set<Integer> integerSet = boxedToInteger.collect(Collectors.toSet());
System.out.println(integerSet);
// one line
Set<Integer> oneLineResult = Arrays.stream(num)
.boxed()
.collect(Collectors.toSet());
System.out.println(oneLineResult);
}
String[] -> Set<String> : 참조형 타입
▪ 참고 : 앞선 int[]와 달리 로 boxing하는 작업이 필요없다.
public static void main(String[] args) {
String[] fruits = {"banana", "apple", "mango", "kiwi", "peach", "cherry", "lemon"};
// 1. String[] -> Stream<String>
Stream<String> strStream = Arrays.stream(fruits);
// 2. Stream<String> -> Set<String>
Set<String> stringSet = strStream.collect(Collectors.toSet());
System.out.println(stringSet);
// one line
Set<String> oneLineResult = Arrays.stream(fruits)
.collect(Collectors.toSet());
System.out.println(oneLineResult);
}
추가적인 내용들은 공부하면서 더 추가할 예정!
'Programming > Java' 카테고리의 다른 글
[JAVA] 스레드 풀이란? ThreadPool (2) | 2024.02.05 |
---|---|
[JAVA] - 화면에서 입력받는 방법 - Scanner (0) | 2023.11.02 |