JAVA

스트림의 기본 및 간단한 특징

쿠카이든 2022. 2. 14. 11:39
728x90
  • (Java 8이상)스트림(Stream) 이란?
    • 다양한 데이터 소스를 표준화된 방법으로 다루기 위한 것이다.
    • 스트림이 제공하는 기능 - 중간 연산과 최종 연산
      • 중간 연산 - 연산결과가 스트림인 연산. 반복적으로 적용 가능하다.
      • 최종 연산 - 연산결과가 스트림이 아닌 연산. 스트림의 요소를 소모하므로 한번만 적용가능하다.
      • 스트림의 구조
  • 스트림의 특징
    • 스트림은 데이터 소스로부터 데이터를 읽기만할 뿐 변경하지 않는다.
    • 스트림은 Iterator처럼 일회용이다.
    • 최종 연산 전까지 중간연산이 수행되지 않는다. - 지연된 연산
List<Integer> list = Arrays.asList(4, 2, 5, 1, 3);
List<Integer> sortedList = list.stream().sorted()
        .collect(Collectors.toList());
System.out.println(list);
System.out.println(sortedList);
IntStream intStream = new Random().ints(1, 46);
intStream.distinct().limit(6).sorted().         //중간 연산
forEach(i->System.out.print(i+","));            //최종 연산
    • 스트림 중간 연산의 종류
      • 스트림 자르기 - skip(), limit()
      • 스트림의 요소 걸러내기 - filter(), distinct()
IntStream intStream = IntStream.rangeClosed(1, 10);
intStream.filter(i->i%2==0).forEach(System.out::print);   //2의 배수만 출력
    • 스트림 정렬하기 - sorted()
    • 스트림의 요소 변환하기 - map()
Stream<File> fileStream = Stream.of(new File("FileEx1.java")
                                  , new File("FileEx2.java")
                                  , new File("FileEx3.java"));
Stream<String> filenameStream = fileStream.map(File::getName); //File 스트림을 String 스트림으로 변환
filenameStream.forEach(System.out::println);                   //File 스트림의 이름을 출력

 

728x90