stream을 이용해 map의 데이터를 객체화

남기용·2021년 7월 29일

자바

목록 보기
1/9

자바 스트림을 이용해 맵에 있는 key, value 값을 객체로 만들어 보고 싶다.

map.forEach((key,value)-> new Object(key, value);

위와 같은 방법도 있지만 그냥 다른 방법을 사용해 보고 싶었고 객체를 생성해서 객체를 저장하는 리스트를 생성하고 싶은데 forEach를 통한 구현은 직관적이지 않고 stream의 병렬성을 갖고 가고 싶었다.

그래서 구글에 방법을 찾다 스택오버플로우 링크를 발견했다.

https://stackoverflow.com/questions/31763930/new-object-instantiation-when-using-java-8-streams

두가지 방법이 있는데

1번은

map.entrySet().stream().map(e -> new Object(e.getKey(), e.getValue()).collect(Collectors.toList());

이고

2번은

map.entrySet().stream().map(Object::new).collect(Collectors.toList());

이다.

스택오버플로우의 설명에 따르면 2번 방법이 바이트코드를 적게 생성하고 컴파일 단계에서 생성자로 바로 연결을 해주어 파일 사이즈에서 이득이 있지만 성능상 차이는 없다고 한다.

설명에 따르면 2방법 모두 사용가능하기에 알아서 잘 사용하자.

profile
개인용 공부한 것을 정리하는 블로그입니다.

0개의 댓글