본문 바로가기

공부함/JAVA Hard

[JAVA] 모델을 담은 리스트에서 모델 내의 특정 값을 추출하여 하나의 문자열로 만들기

 

 

[ 목적 ] 

댓글 리스트의 댓글 번호만 추출하여 in쿼리로 특정 댓글을 조회하고 싶다.

 

[ 할 일 ]

- 리스트에서 댓글 번호를 가져온 후 하나의 문자열로 만들기.

 

 

[ 작업결과 ]

방법 1 - for 문을 이용한 문자 조합

for (ReplyModel reply : replyList) {
    replyNoStr = replyNoStr + "," + reply.getReplyNo(); 
}

 

또는

StringBuilder replyNoStrBuilder = new StringBuilder();
for (ReplyModel reply : replyList) {
    replyNoStrBuilder.append(",").append(reply.getReplyNo());
}

 

 

방법 2 - stream을 이용한다 

 

단, 아래와 같이 코딩하는 경우 에러가 발생한다.

String replyNoStr =
     replyList.stream()
     .map(ReplyModel::getReplyNo)
     .collect(Collectors.joining(","));

 

replyNo는 숫자형인데, collectors는 문자열에 적용할 수 있기 떄문이다.

그래서 아래와 같이 적용하여 해결하였다.

 

 

String replyNoStr = 
	replyList.stream()
    .map(reply -> String.valueOf(reply.getReplyNo()))
    .collect(Collectors.joining(","));