반응형
📌 주요 주제: Java Stream API 활용
Java 8부터 도입된 Stream API는 대량의 데이터를 효율적으로 처리할 수 있도록 도와주는 기능입니다. 이번 수업에서는 다양한 스트림 생성 방법과 그 활용 예제를 중심으로 학습했습니다.
📌 예제 코드
✅ 컬렉션 및 배열 기반 스트림
Set<String> set = new HashSet<>();
set.add("홍길동");
set.add("신용권");
set.add("감자바");
set.stream().forEach(name -> System.out.println(name));
✅ 병렬 스트림
List<String> list = Arrays.asList("홍길동", "신용인", "김자바", "비신용", "람다식");
list.parallelStream().forEach(name ->
System.out.println(name + " : " + Thread.currentThread().getName()));
✅ 파이프라인 처리 - 평균 구하기
List<Student> list = Arrays.asList(
new Student("홍길동", 10),
new Student("신용권", 20),
new Student("김자바", 30)
);
double avg = list.stream()
.mapToInt(Student::getScore)
.average()
.getAsDouble();
System.out.println("평균 점수 : " + avg);
✅ 배열 스트림
String[] names = { "홍길동", "김자바", "파이썬" };
Arrays.stream(names).forEach(System.out::println);
int[] nums = { 1, 2, 3, 4, 5 };
Arrays.stream(nums).forEach(System.out::println);
✅ 범위 스트림
IntStream.rangeClosed(1, 100).forEach(i -> sum += i);
System.out.println(sum);
✅ 파일 스트림
Path path = Paths.get(StreamExample.class.getResource("data.txt").toURI());
Stream<String> stream = Files.lines(path, Charset.defaultCharset());
stream.forEach(System.out::println);
stream.close();
📌 고급 활용
✅ Product 객체 스트림 출력
List<Product> list = new ArrayList<>();
for(int i = 1; i <= 5; i++)
list.add(new Product(i, (int)(Math.random()*10000), "상품"+i, "멋진회사"));
list.stream().forEach(System.out::println);
✅ 필터링과 중복 제거
list.stream().distinct().filter(n -> n.startsWith("신")).forEach(System.out::println);
💡 포인트 정리
- stream(): 컬렉션이나 배열을 스트림으로 변환
- parallelStream(): 병렬 스트림으로 처리 속도 향상 가능
- mapToInt(), average(): 수치 데이터 집계 처리
- distinct(), filter(): 중복 제거 및 조건 필터링
- Files.lines(): 파일 내용을 스트림으로 읽기
- 스트림은 한 번만 소비 가능하며 재사용 불가
- 중간 연산(filter, map)과 최종 연산(forEach, sum)을 구분해서 사용할 것
📌정리하자면, 28일차 수업에서는 스트림(Stream)을 통해 데이터를 간결하고 효율적으로 처리하는 방법을 배웠습니다. forEach, mapToInt, filter, distinct, Files.lines() 등 다양한 연산을 조합하여 데이터 흐름을 구성하는 사고방식을 키우는 것이 핵심입니다. 실무에서도 자주 사용되므로, 반복 학습을 통해 자연스럽게 익혀두면 좋습니다!
'국비' 카테고리의 다른 글
[ 31일차 ] SQL 시작 초기 (2) | 2025.05.28 |
---|---|
[ 30일차 181~182 ] 수업 정리 - 자바 (1) | 2025.05.27 |
[ 29일차 169~180 ] 수업 정리 - 자바 (0) | 2025.05.26 |
[ 27일차 153~160 ] 수업 정리 - 자바 (0) | 2025.05.22 |
[ 26일차 145~152 ] 수업 정리 - 자바 (0) | 2025.05.21 |
[ 25일차 137~144 ] 수업 정리 - 자바 (1) | 2025.05.20 |