헤르메스 LIFE

[Core Java] 람다식을 이용한 List 안에 Map 에서 데이터 찾기 본문

Core Java

[Core Java] 람다식을 이용한 List 안에 Map 에서 데이터 찾기

헤르메스의날개 2021. 1. 5. 01:21
728x90

일반적으로 List<Map<String, String>> 표현을 많이 사용하게 되는데..

List 안에 Map이 있는 경우, 데이터를 찾기가 쉽지 않습니다. 결국은 for loop 를 이용하는 수 밖에..

 

package test.sample.string;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Optional;

public class RamdaSample {
    
    public static void main( String[] args ) {
        
        List<Map<String, String>> list = new ArrayList<Map<String, String>>();
        Map<String, String>       map  = null;
        
        map = new HashMap<String, String>();
        map.put( "sabun", "0001" );
        map.put( "name", "홍길동" );
        list.add( map );
        
        map = new HashMap<String, String>();
        map.put( "sabun", "0002" );
        map.put( "name", "허균" );
        list.add( map );
        
        map = new HashMap<String, String>();
        map.put( "sabun", "0003" );
        map.put( "name", "신사임당" );
        list.add( map );
        
        map = new HashMap<String, String>();
        map.put( "sabun", "0004" );
        map.put( "name", "허균" );
        list.add( map );
        
        Map<String, String> result = null;
        Optional option = null;
        
        // 첫번째꺼
        option = list.stream().filter( x -> x.get( "name" ).equals( "허균" ) ).findFirst();
        System.out.println( "option :: " + option );
        
        // 아무거나
        option = list.stream().filter( x -> x.get( "name" ).equals( "허균" ) ).findAny();
        System.out.println( "option :: " + option );

        // Option
        System.out.println( "option.get() :: " + option.get() );
        
        // 모두 찾음
        Iterator<Map<String, String>> itr = list.stream().filter( x -> x.get( "name" ).equals( "허균" ) ).iterator();
        while ( itr.hasNext() ) {
            result = itr.next();
            System.out.println( "result :: " + result );
        }
    }
}

 

참고 : ict-nroo.tistory.com/43

참고 : walbatrossw.github.io/java/2018/02/21/java-basic-28-lambda.html

728x90