본문 바로가기
프로그래밍/JAVA

java8 stream List를 Map으로 변환

by 애플 로그 2023. 2. 14.
반응형

java8 stream List를 Map으로 변환

 

자바 Stream이란?

자바 스트림 이란 자바8에 추가된 기능으로 컬렉션과배열 등 데이터를 처리하는데 아주 유용한 기능이다. 비유를 하자면 물이 스트림을 타고 흐르는것 처럼 데이터가 스트림을 타고 흐르는것이라고 생각하면 편하다.

 

스트림을 사용하면 데이터를 여러단계로 나누어 처리할수 있는데, 스트림을 이용해서 데이터를 필터링하고 정렬 그룹핑하는 등 여러가지 작업을 다양하고 간편하게 처리할수 있다. 

 

스트림은 처리과정의 중간 결과를 저장하지 않기 떄문에 메모리 사용량도 적어서 데이터 처리할때는 매우 유용하다고 할수 있다. 병렬 처리도 지원하기 때문에 빠른 처리도 가능하다.

 

자바8 스트림을 요약하면,

  • 자바 8 부터 추가된 데이터 기능
  • 컬렉션 배열 데이터 처리하는 하는데 유용하다
  • 함수형 프로그래밍 사용
  • 중간결과를 저장하지 않아서 메모리 사용량이 적음
  • 병렬처리도 가능하여 빠른 처리가 가능하다

java 로고

자바 Stream을 사용해서 List를 map으로 변경하는 방법을 알아보자.

Stream을 map과 for문을 이용하지않고도 더 간결하고 직관적이게 코딩할수 있다.

 

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class ListToMap {

    public static void main(String[] args) {

        List<SimpleObject> list = new ArrayList<>();

        list.add(new SimpleObject("one", "simple111"));
        list.add(new SimpleObject("two", "simple222"));
        list.add(new SimpleObject("three", "simple333"));

        // collect 를 사용하여 데이터를 원하는 자료형으로 변경한다
        Map<String, String> map = list.stream().collect( 
           // map으로 변환 처리
           Collectors.toMap(SimpleObject::getName, SimpleObject::getValue)
        );

        System.out.println(map);
    }
}

class SimpleObject {
    private String name;
    private String value;
    public SimpleObject(String name, String value) {
        this.name = name;
        this.value = value;
    }

    public String getName() {
        return name;
    }

    public String getValue() {
        return value;
    }
}

< 결과 > 

 {one=simple111, two=simple222, three=simple333}

 

stream.collect() 와 Collrectors.toMap()을 결과를  map에 담아서 반환처리 했다.

위와 같이 간결한 코딩을 구현할수 있다.

 

 

 

java8 stream의 쉬운 사용방법 (map, filter, collect)

 

java8 stream의 쉬운 사용방법 (map, filter, collect)

java8 stream의 쉬운 사용방법 (map, filter, collect) java8부터 지원 되는 대표적인 API인 stream에 대해 알아보려고 한다. Stream은 컬렉션, 배열에 저장되어 있는 요소들을 하나씩 참조하며 반복적인 처리를

www.appletong.com

 

댓글