728x90

[스트림]

스트림은 Java 8에서 추가된 기능으로 컬렉션 데이터를 선언형으로 쉽게 처리할 수 있다.

복잡한 반복문을 사용하지 않아도 된다.

 

많은 데이터를 원하는 조건에 따라 1차 필터링, 2차 필터링 ... 원하는 만큼 필터링을 하여 데이터를 가공할 수 있고,

데이터 중 필요한 요소만 꺼내오도록 할 수 있다.

그러기 때문에 데이터 가공이 편리하다는 이점이 있다. 

 

[스트림 생성]

public static void main(String[] args) {

    // 스트림 생성
    int[] num = {1, 2, 3, 4, 5};
    IntStream numStream = Arrays.stream(num);

    String[] str = {"A", "B", "C"};
    Stream<String> strStream = Arrays.stream(str);

    // Collection 스트림 생성
    ArryaList<String> list = new ArrayList<>();
    list = Arrays.asList("A", "B", "C");
    Stream<String> listStream = list.stream();
    
    // Stream.of()
    Stream<String> str2 = Stream.of(("A", "B", "C");
}
  • Arrays.stream을 사용하여 스트림을 생성할 수 있다.
  • Collection도 변수명.stream()을 사용하여 스트림을 생성할 수 있다.
  • Stream.of()를 통해 무자열 요소를 포함하는 스트림을 생성할 수 있다.   

 

[스트림 사용]

public static void main(String[] args) {

    // 스트림 생성
    int[] num = {10, 20, 30, 40, 50};
    IntStream numStream = Arrays.stream(num);

    // 스트림 사용
    // 30 이상만 출력
    Arrays.stream(num)
        .filter(x -> x >= 30)
        .forEach(x -> System.out.println(x));

    // 30이상인 수의 개수
    int count = (int)Arrays.stream(num)
        .filter(x -> x >= 30)
        .count(); // count는 long타입
	System.out.println(count);


    // num 배열 요소의 합
    int sum = Arrays.stream(num)
    	.sum();
    System.out.println(sum);

}

정렬 -> .sorted()

특정 글자로 시작 -> .startsWith("문자")

특정 글자 포함 -> .contains("문자") 

등의 메소드를 사용하여 데이터를 가공할 수 있다.

 

추가로 map()을사용하여 문자를 더하거나, 대소문자로 바꾸는 등 다양한 데이터 가공을 할 수 있다.       

 

728x90

'Java' 카테고리의 다른 글

예외처리(try-catch)  (0) 2023.06.14
박물관 입장료 프로그램  (0) 2023.06.13
함수형 인터페이스 (Functional Interface)  (0) 2023.06.13
람다식(Lambda)  (0) 2023.06.13
익명 클래스  (0) 2023.06.13

+ Recent posts