Notice
Recent Posts
Recent Comments
Link
160x600
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- HeidiSQL
- 예측
- keras
- pandas
- Deep Learning
- sql
- 데이터
- tensorflow
- 데이터베이스
- 딥러닝
- 정확도
- python기초
- 시각화
- 데이터 분석
- Database
- 데이터 가공
- 파싱 오류
- sklearn
- 훈련
- pythone
- DB
- Oracle
- python
- 오라클
- MariaDB
- 머신러닝
- 해석
- 회귀모델
- 데이터 수집
- 데이터전처리
Archives
- Today
- Total
코딩헤딩
Java Stream 정리 + 활용법 본문
728x90
* Java 8부터 도입된 Stream API의 활용법
1. Stream이란?
Java Stream은 컬렉션(리스트, 셋 등)의 요소를 함수형 스타일로 처리할 수 있게 해주는 API.
루프(for, while)를 대체하여 가독성이 높고, 병렬처리도 쉽게 지원함.
2. Stream의 기본 사용법
List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David");
// 1) 스트림 생성
Stream<String> stream = names.stream();
// 2) 중간 연산: 필터링
Stream<String> filtered = stream.filter(name -> name.startsWith("A"));
// 3) 최종 연산: 출력
filtered.forEach(System.out::println);
3. 주요 중간 연산 (Intermediate Operations)
- filter(Predicate<T>) : 조건에 맞는 요소만 필터링
- map(Function<T, R>) : 요소를 다른 형태로 변환
- sorted() : 정렬
- distinct() : 중복 제거
- limit(n) : 앞의 n개만 추출
4. 주요 최종 연산 (Terminal Operations)
- forEach(Consumer<T>) : 요소 소비
- collect(Collector) : 결과를 컬렉션 등으로 변환
- reduce(BinaryOperator) : 요소를 하나로 합침
- count() : 요소 개수 반환
- anyMatch(Predicate), allMatch(Predicate) : 조건 만족 여부 확인
5. 예제
# 직원 리스트에서 연봉 5,000 이상인 사람 이름만 뽑기
class Employee {
String name;
int salary;
// 생성자, getter 생략
}
List<Employee> employees = List.of(
new Employee("홍길동", 6000),
new Employee("김철수", 4500),
new Employee("이영희", 5200)
);
List<String> highEarners = employees.stream()
.filter(emp -> emp.getSalary() >= 5000)
.map(Employee::getName)
.collect(Collectors.toList());
System.out.println(highEarners); // [홍길동, 이영희]
6. 병렬 스트림 (Parallel Stream)
병렬 처리를 통해 성능 향상 가능/단, 상태 공유나 순서 의존 코드 주의
employees.parallelStream()
.filter(emp -> emp.getSalary() >= 5000)
.map(Employee::getName)
.forEach(System.out::println);
- Stream은 코드 간결, 가독성 향상에 탁월
- 적절히 병렬 스트림을 활용해 성능 개선 가능
- 너무 복잡한 스트림 체인은 오히려 가독성을 해칠 수 있으니 적절한 분리 필요
728x90
'뻘짓' 카테고리의 다른 글
메소드 오버로딩 vs 오버라이딩 (0) | 2025.08.04 |
---|---|
정보처리기사 정리(21.08.14 기출) (1) | 2024.01.31 |
자소서 | 포트폴리오 (0) | 2024.01.12 |
[YOLO] Object Detection 켄타우로스는 사람일까 동물일까? (0) | 2024.01.10 |
[python] 일반방식 VS 이터레이터 방식 (0) | 2023.11.16 |