본문 바로가기
Programming/Java

[JAVA] - Arrays.stream 사용 예제

by jenlve 2024. 1. 2.

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