LUMI_dev
1달 역량평가_DailyReport0421 본문
**오늘 날짜 :** 2025-04-21
**진도 정리 :**
오늘은 스테이지 3 step3까지 1회독을 완료하였습니다.
**오늘 공부한 토픽:** `stream API` , `Optional`
### 1. `Optional.ofNullable()`
- **정의**: `null`이 될 수 있는 값을 감싸서, `null`일 때 발생할 수 있는 오류를 예방할 수 있게 해주는 클래스입니다. 주로 `null`을 안전하게 처리할 때 사용합니다.
```java
Optional.ofNullable(retrieveByName(name))
.ifPresent(club -> {
throw new ClubDuplicationException("Club already exists with name:" + club.getName());
});
```
이 코드에서는`retrieveByName(name)`이 `null`이 아니면 클럽 중복 예외를 발생시킵니다.
### 2. `stream()`
- **정의**: 컬렉션(List, Set 등)을 스트림으로 변환해, 각 요소를 하나씩 처리할 수 있게 합니다.
```java
List<String> members = clubMembershipDtos.stream()
.map(membership -> membership.getMemberEmail()) // 리스트 내 요소를 처리
.collect(Collectors.toList()); // 리스트로 수집
```
이 코드에서 `clubMembershipDtos` 리스트를 스트림으로 변환하고, 각 멤버십에서 이메일을 추출해 새로운 리스트로 모은 것입니다.
### 3. `.filter()`
- **정의**: 스트림의 각 요소에 대해 조건을 검사하여,
조건을 만족하는 것만 골라냅니다.
```java
ClubMembership targetMembership = foundMember.getMembershipList().stream()
.filter(membership -> membership.getClubId().equals(clubId))
.findAny()
.orElseThrow(() -> new NoSuchMembershipException("No such membership with clubId --> " + clubId ));
```
### 4. `.map()`
- **정의**:스트림의 각 요소를 변환하여 다른 형태로 바꿔주는 메소드입니다. 기존의 컬렉션에 대해서 특정 연산을 수행 후 새로운 컬렉션을 만들어내는 역할을 합니다.
```java
List<String> memberEmails = clubMembershipDtos.stream()
.map(membership -> membership.getMemberEmail()) // 각 멤버십 객체에서 이메일을 추출
.collect(Collectors.toList());
```
이 코드에서 `clubMembershipDtos` 리스트의 각 `membership` 객체에서 이메일을 뽑아 `String` 리스트로 변환합니다.
### 5. `.forEach()`
- **정의**: 스트림의 각 요소에 대해 특정 작업을 실행하는 메소드입니다.
```java
memberMap.get(targetEmail).getMembershipList()
.stream()
.filter(membershipOfMember -> membershipOfMember.getClubId().equals(clubId))
.forEach(membershipOfMember -> membershipOfMember.setRole(newRole));
```
이 코드는 `getMembershipList()`에 대해 스트림을 생성한 후, `clubId`에 해당하는 멤버십을 필터링하고, 각 멤버십에 대해 `setRole(newRole)` 작업을 실행하고 있습니다.**오늘 날짜 :** 2025-04-21
**진도 정리 :**
오늘은 스테이지 3 step3까지 1회독을 완료하였습니다.
**오늘 공부한 토픽:** `stream API` , `Optional`
### 1. `Optional.ofNullable()`
- **정의**: `null`이 될 수 있는 값을 감싸서, `null`일 때 발생할 수 있는 오류를 예방할 수 있게 해주는 클래스입니다. 주로 `null`을 안전하게 처리할 때 사용합니다.
```java
Optional.ofNullable(retrieveByName(name))
.ifPresent(club -> {
throw new ClubDuplicationException("Club already exists with name:" + club.getName());
});
```
이 코드에서는`retrieveByName(name)`이 `null`이 아니면 클럽 중복 예외를 발생시킵니다.
### 2. `stream()`
- **정의**: 컬렉션(List, Set 등)을 스트림으로 변환해, 각 요소를 하나씩 처리할 수 있게 합니다.
```java
List<String> members = clubMembershipDtos.stream()
.map(membership -> membership.getMemberEmail()) // 리스트 내 요소를 처리
.collect(Collectors.toList()); // 리스트로 수집
```
이 코드에서 `clubMembershipDtos` 리스트를 스트림으로 변환하고, 각 멤버십에서 이메일을 추출해 새로운 리스트로 모은 것입니다.
### 3. `.filter()`
- **정의**: 스트림의 각 요소에 대해 조건을 검사하여,
조건을 만족하는 것만 골라냅니다.
```java
ClubMembership targetMembership = foundMember.getMembershipList().stream()
.filter(membership -> membership.getClubId().equals(clubId))
.findAny()
.orElseThrow(() -> new NoSuchMembershipException("No such membership with clubId --> " + clubId ));
```
### 4. `.map()`
- **정의**:스트림의 각 요소를 변환하여 다른 형태로 바꿔주는 메소드입니다. 기존의 컬렉션에 대해서 특정 연산을 수행 후 새로운 컬렉션을 만들어내는 역할을 합니다.
```java
List<String> memberEmails = clubMembershipDtos.stream()
.map(membership -> membership.getMemberEmail()) // 각 멤버십 객체에서 이메일을 추출
.collect(Collectors.toList());
```
이 코드에서 `clubMembershipDtos` 리스트의 각 `membership` 객체에서 이메일을 뽑아 `String` 리스트로 변환합니다.
### 5. `.forEach()`
- **정의**: 스트림의 각 요소에 대해 특정 작업을 실행하는 메소드입니다.
```java
memberMap.get(targetEmail).getMembershipList()
.stream()
.filter(membershipOfMember -> membershipOfMember.getClubId().equals(clubId))
.forEach(membershipOfMember -> membershipOfMember.setRole(newRole));
```
이 코드는 `getMembershipList()`에 대해 스트림을 생성한 후, `clubId`에 해당하는 멤버십을 필터링하고, 각 멤버십에 대해 `setRole(newRole)` 작업을 실행하고 있습니다.
'취준' 카테고리의 다른 글
1달 역량평가_DailyReport0418 (0) | 2025.04.28 |
---|---|
1달 역량평가_DailyReport0417 (1) | 2025.04.17 |
2025-04-15 DailyReport (0) | 2025.04.16 |
1달 역량 평가_0414 데일리 리포트 (0) | 2025.04.15 |
비전공자 개발자 상반기 취준 근황 (0) | 2025.04.10 |