[자바의 신] 33장 Java8에서 변경된 것들은 ? - Stream

한지연·2023년 5월 14일
0

📘 Stream

  • 연속된 정보를 처리하는 데 사용
  • 배열은 스트림을 사용할 수 없지만 컬렉션은 가능

📚 Stream 구조

  • 스트림 생성: 컬렉션 목록을 스트림 객체로 변환
  • 중개 연산: 스트림 객체를 사용하여 중개 연산 부분에서 처리, 결과를 리턴할 수 없음
  • 종단 연산: 중개 연산에서 작업된 내용을 리턴해 줌
  • 중개 연산이 반드시 있어야 하는 것은 아님
  • 순차적으로 데이터 처리

📚 연산자 종류

▼ 사이트 들어가서 직접 확인해보기
https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html

  • 연산자의 종류는 많지만 일반적으로 많이 사용하는 것은 forEach(), filter(), map() 정도임

배열을 List로 바꾸는 방법

1️⃣ Arrays.asList()

        String[] strArr = {"안", "녕", "하", "세", "요"};
        
        ArrayList<String> strList = new ArrayList<String>(Arrays.asList(strArr));

2️⃣ Stream().collect()

        String[] strArr = {"안", "녕", "하", "세", "요"};
        
        java.util.List<String> strStream = Arrays.stream(strArr).collect(Collectors.toList());

📚 사용 예시

  • DTO class
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private String name;
    private String age;
}
  • forEach()
        java.util.List<User> list = new ArrayList<>();
        list.add(new User("test1", 20));
        list.add(new User("test2", 21));
        list.add(new User("test3", 22));
        list.add(new User("test4", 23));
        list.add(new User("test5", 24));

        list.stream().forEach(user -> System.out.println(user.getName));
  • map()
        Integer[] numArr = {1, 2, 3, 4, 5, 6, 7 ,8, 9};
        java.util.List<Integer> list = new ArrayList<>(Arrays.asList(numArr));

        list.stream().map(num -> num * 3).forEach(System.out::println);
  • filter()
        list.stream().filter(num -> num < 5).forEach(System.out::println);
profile
배우고 활용하는 것을 즐기는 개발자, 한지연입니다!

0개의 댓글