Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

3주차 과제(김종민) #19

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

rlajm1203
Copy link
Collaborator

No description provided.

@rlajm1203 rlajm1203 changed the title 3주차 과제 3주차 과제(김종민) May 12, 2024
@rlajm1203 rlajm1203 self-assigned this May 12, 2024
Comment on lines +6 to +17
@RequiredArgsConstructor
public class AllApplicantCnt {

// private final String generation;
//
// private final Integer cnt;
//
// public static AllApplicantCnt of(String generation, Integer cnt){
// return new AllApplicantCnt(generation, cnt);
// }

}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

주석으로 가득찬 코드? 그냥 지우세요 ㅋㅋ 추상 클래스로 선언해둬도 되구요.

Comment on lines +13 to +22
private final Integer cnt;

private final Map<String, Integer> hopeFieldCnt;

private final Map<String, Integer> majorCnt;

private final Map<String, Integer> pathCnt;

// 이게 난관이네
private final DesiredTimeStatistics desiredTimes;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이렇게 선언할 경우 나중에 캐시나 DB에 최신 데이터를 저장하게 될경우
@transient를 사용해서 일부 필드를 제외하거나, JSON String Serialize 를 하게 될 경우 @JsonIgnore를 사용할 수 있습니다. 이 점 인지하고 넘어갑시다.

Comment on lines +25 to +32
List<int[]> desiredTime = times.getDesiredTime();
for (int i = 0; i < 3; i++) {
List<Integer> tmp = new ArrayList<>();
int[] targetArr = desiredTime.get(i);
for (int j = 0; j < desiredTime.size(); i++) {
if (targetArr[j] == 1) tmp.add(j);
}
DesiredTimeStatistics.put(tmp,times.getRegistrationId());
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

stream 필드 내에서 for문을 쓰는 것은 패러다임의 불일치입니다. 함수형과 절차지향의 짬뽕이랄까요.
최대한 stream을 사용했다면 stream 클래스의 메소드만 사용해서 구성하세요.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

람다의 매개변수로 times를 주셨는데 stream을 사용했을 때 스트림 원소는 List 이아니라 DesiredTime 객체 1개입니다. 따라서 times보다는 time이 의미에 맞을 것 같네요

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

그리고 desiredTime이 List<int[]> 이라서 내부에서 for문을 이렇게 사용한 것 같은데 flatMap을 사용해서 List<Integer>로 바꾸고 원하는 작업을 stream으로 하면 더 좋을 것 같네요

s -> s, // 키는 희망 분야 그대로
Collectors.mapping(
s -> 1, // 희망 분야를 1로 변경
Collectors.reducing(0, (i,j)->i+j) // 누적
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(i,j) -> i+jInteger::sum 으로 변경할 수 있습니다. 훨씬 의미가 잘 전달되겠죠?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants