728x90
/*
스트림은 배열이나 컬렉션(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]
728x90
'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 |
댓글