ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] 스트림(Stream)
    프로그래밍/JAVA 2023. 3. 11. 23:07
    728x90

     

     

    자바 스트림(Stream)은 컬렉션(Collection)과 Array에 저장되어있는 요소(Element)들을 하나씩 순회하면서 처리할 수 있는 코드패턴으로 람다형(함수형 인터페이스)과 함께 사용되어 코드 양을 줄이고 간결한 표현으로 간단하게 요소를 처리할 수 있다.

     

     

     

    스트림 생성 방법

    // 리스트
    List<String> list = Arrays.asList("a", "b", "c");
    list.stream();
    
    // 배열
    String[] array = new String[]{"a", "b", "c"};
    Arrays.stream(array);

     

     


     

     

     

    스트림 데이터 가공

     

    1) map()

    스트림에서 나오는 데이터를 변경하여 새로운 데이터를 만든다.

    List<String> list = new ArrayList<>(Arrays.asList("Apple","Banana","Melon","Grape","Strawberry"));
    List<String> list1 = list.stream()
            .map(s -> s.toUpperCase())
            .collect(Collectors.toList());
    System.out.println(list1);
    
    list.stream()
            .map(String::toUpperCase)
            .forEach(s -> System.out.println(s));
    
    
    // [APPLE, BANANA, MELON, GRAPE, STRAWBERRY]
    // APPLE
    // BANANA
    // MELON
    // GRAPE
    // STRAWBERRY

     

    2) filter()

    스트림에서 나오는 데이터에서 특정 데이터만 골라낸다.

    List<String> list = new ArrayList<>(Arrays.asList("Apple","Banana","Melon","Grape","Strawberry"));
    List<String> list1 = list.stream()
            .filter(t->t.length()>5)
            .collect(Collectors.toList());
    System.out.println(list1);
    
    list.stream()
            .filter(t->t.length()>5)
            .forEach(s -> System.out.println(s));
    
    
    // [APPLE, BANANA, MELON, GRAPE, STRAWBERRY]
    // APPLE
    // BANANA
    // MELON
    // GRAPE
    // STRAWBERRY

     

    3) sorted()

    스트림 데이터들을 정렬해준다. 

    List<String> list = new ArrayList<>(Arrays.asList("Apple","Banana","Melon","Grape","Strawberry"));
    List<String> list1 = list.stream()
            .sorted()
            .collect(Collectors.toList());
    System.out.println(list1);
    
    list.stream()
            .sorted()
            .forEach(s -> System.out.println(s));
    
    
    // [APPLE, BANANA, GRAPE, MELON, STRAWBERRY]
    // APPLE
    // BANANA
    // GRAPE
    // MELON
    // STRAWBERRY

     

     


     

     

     

    스트림 결과 생성

     

    1) collect()

    가공된 스트림 데이터의 값을 다른 Collector로 생성한다.  

     

    toList() : 스트림 데이터를 List로 저장한다.

    List<String> list = new ArrayList<>(Arrays.asList("Apple","Banana","Melon","Grape","Strawberry"));
    List<String> list1 = list.stream()
            .map(s -> s.toUpperCase())
            .collect(Collectors.toList());
    System.out.println(list1);
    
    
    // [APPLE, BANANA, MELON, GRAPE, STRAWBERRY]

     

     

    toSet() : 스트림 데이터를 Set로 저장한다.

    List<String> list = new ArrayList<>(Arrays.asList("Apple","Banana","Melon","Grape","Strawberry"));
    Set<String> set1 = list.stream()
            .map(s -> s.toUpperCase())
            .collect(Collectors.toSet());
    System.out.println(set1);
    
    
    // [APPLE, GRAPE, BANANA, MELON, STRAWBERRY]

     

     

    joining() : 스트림 데이터를 이어붙인다.

    List<String> list = new ArrayList<>(Arrays.asList("Apple","Banana","Melon","Grape","Strawberry"));
    String result = list.stream()
            .collect(Collectors.joining());
    
    System.out.println(result);
    
    String result2 = list.stream()
            .collect(Collectors.joining(" "));
    
    System.out.println(result2);
    
    
    // AppleBananaMelonGrapeStrawberry
    // Apple Banana Melon Grape Strawberry

     

     

    foreach() : 스트림 데이터를 순회적으로 작업가능하다.

    List<String> list = new ArrayList<>(Arrays.asList("Apple","Banana","Melon","Grape","Strawberry"));
    
    list.stream()
            .map(s -> s.toUpperCase())
            .forEach(System.out::println);
            
    // APPLE
    // BANANA
    // MELON
    // GRAPE
    // STRAWBERRY

     

     

     

     

     

    728x90

    '프로그래밍 > JAVA' 카테고리의 다른 글

    [Java] int[] to Integer[], Integer[] to int[]  (0) 2024.08.29
    [Java] Optional<T>  (0) 2023.03.12
    [Java] Arrays.asList()  (0) 2023.03.11
    [Java] Selenium(셀레니움)  (0) 2022.08.18
    [Java] 크롤링(Crawling)  (0) 2022.08.17

    댓글

Designed by Tistory.