본문 바로가기
JAVA/Java

JAVA stream

by KkingKkang 2023. 10. 18.
/*
스트림은 배열이나 컬렉션(List, Set, Map)으로 원하는 값을 얻을 때
for문 도배를 방지하기 위해 나온 개념인데
10줄짜리 코드를 Stream을 사용하면
한 줄로 줄여버릴 수 있다

선언
- 배열, 컬렉션(list, set, map) 등을 스트림 형태로 만들기
Stream<데이터타입> stream명 = Arrays.stream(배열명);
Stream<데이터타입> stream명 = 리스트명.stream();
Stream<데이터타입> stream명 = Stream.of('값', '값'....);
*/

import java.util.Arrays;
import java.util.Comparator;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class streamTest {

    public static void main(String args[]) {
        Integer[] arr = {1,2,3,4,5,5};

        //각 요소별 출력
        Arrays.stream(arr).forEach(element -> {
            System.out.print(element + " ");
        });

        System.out.println();

        // 스트림 생성하기
        // 정의된 스트림은 한번밖에 쓸 수 없다.
        // 중복시 에러메세지 : stream has already been operated upon or closed
        Stream<Integer> intStream = Arrays.stream(arr); //stream 생성

        //.collect(Collectors.toList()) 를 안붙여주면 제대로된 값이 안나온다.
        System.out.println( "리스트화 안된 값: " + Arrays.stream(arr).distinct());
        System.out.println( "리스트화 된 값: " + Arrays.stream(arr).distinct().collect(Collectors.toList()));

        System.out.println();
        //활용
        System.out.println( "중복제거: " + Arrays.stream(arr).distinct().collect(Collectors.toList()));
        System.out.println( "정렬: " +  Arrays.stream(arr).sorted().collect(Collectors.toList()));
        System.out.println( "역정렬: " + Arrays.stream(arr).sorted(Comparator.reverseOrder()).collect(Collectors.toList()));
        System.out.println( "첫 요소 반환: " + Arrays.stream(arr).findFirst());
        System.out.println( "마지막 요소 반환: " + Arrays.stream(arr).skip(arr.length-1).findFirst());
        System.out.println( "건너뛰기: " + Arrays.stream(arr).skip(2).collect(Collectors.toList()));
        System.out.println("~까지 출력" + Arrays.stream(arr).limit(3).collect(Collectors.toList()));
        System.out.println( "count: " +  Arrays.stream(arr).count() );
        System.out.println("max : " + Arrays.stream(arr).max(Integer::compareTo));
        System.out.println("min : " + Arrays.stream(arr).min(Integer::compareTo));

    }

}

 

결과

1 2 3 4 5 5 
리스트화 안된 값: java.util.stream.DistinctOps$1@5f2050f6
리스트화 된 값: [1, 2, 3, 4, 5]
중복제거: [1, 2, 3, 4, 5]
정렬: [1, 2, 3, 4, 5, 5]
역정렬: [5, 5, 4, 3, 2, 1]
첫 요소 반환: Optional[1]
마지막 요소 반환: Optional[5]
건너뛰기: [3, 4, 5, 5]
~까지 출력[1, 2, 3]
count: 6
max : Optional[5]
min : Optional[1]

반응형

'JAVA > Java' 카테고리의 다른 글

ArrayList  (0) 2023.10.23
배열 인덱스 범위 초과 예외 처리  (1) 2023.10.18
DAO생성에서 확인하고 넘어갈 개념 4가지  (0) 2023.07.17
빌드 자동화 도구 Gradle vs Maven  (0) 2023.07.17
기능문자 / 서식문자 / 지정자  (0) 2023.03.31

댓글