상세 컨텐츠

본문 제목

자바 Vo -> Entity 리스트 변환 : stream, map, collect & 람다식

Programming/BackEnd

by Dal_pang 2023. 4. 10. 15:49

본문

Repository를 통해 전달받는 값 Vo를 담은 List<Vo>를,

List<Entity>로 변경하고 싶을 때 사용.

 

List<Vo> voList = new ArrayList<>();
List<Entity> entityList;

entityList = voList.stream().map(Vo::toEntity).collect(Collectors.toList());

 

- stream() : 기존 for, foreach를 통해 하나씩 요소를 꺼내 사용하던 방식을 람다로 변경한 것.

 

- Vo::toEntity : Vo 객체의 toEntity 메서드를 사용하겠다는 의미.

- map(Vo::toEntity) : Vo::toEntity로부터 반환받은 값을 다시 stream으로 반환.

 

- collect(Collectors.toList()) : 스트림을 List로 변환시켜 준다.

 *** toMap, toCollection(람다식) 등 다른 방식으로도 변환가능.

 


단, 이를 사용하기 위해서는 Vo, Entity도 수정해줘야 한다.

 

1) Vo.java

toEntity()에 해당하는 메서드를 만들어, Entity 생성자를 호출해 리턴하기.

public Entity toEntity() {
	return new Entity(값1, 값2, ...);
}

 

2) Entity.java

@AllArgsConstructor 또는 직접 생성자를 만들어줄 것.

자바는 생성자가 없으면 기본 생성자를 자동 생성해 주지만, 생성자를 위와 같이 만드는 경우 더 이상 기본 생성자를 제공하지 않음.

때문에 만약 값이 없이 생성되는 NoArgsConstructor도 필요한 경우에는 같이 추가해줘야 한다. (또는 직접 추가)

728x90

관련글 더보기