코딩/코드리뷰

for문 filter와 map으로 변경하기

코딩하는후운 2021. 8. 27. 09:32
반응형

1. 내가 짠 소스

for( data in images ) {

    if( data.type == TYPE ) {

        list.add(data)

    }

}

 

filter와 map을 이용

list.addAll(

    images.filter { data ->

        data.type == TYPE    

    }.map { data ->

        data

    }

)

 

성능상 부담스럽다면 mapNotNull을 이용할 수도

list.addAll(

    images.mapNotNull { data ->

        data.takeIf{

            data.type == TYPE

        }?.let {

           it
        }

    }

)

 

 

filter() : 필터

filter()는 리스트내에 인자들 중 조건에 일치하는 인자만 필터링합니다.

 

map() : 변환

map()은 컬랙션 내 인자를 변환하여 반환할 때 사용됩니다.

 

mapNotNull() : 변환

mapIndexed()는 컬랙션에 포함된 인자의 인덱스 값을 변환하여 사용할 수 있습니다.

 

 

 

참조: 

https://namget.tistory.com/entry/Kotlin-%EC%BD%94%ED%8B%80%EB%A6%B0-%EC%8A%A4%ED%8A%B8%EB%A6%BC-%ED%95%A8%EC%88%98-map-flatMap-groupBy-filter-take-drop-first-distinct-zip-joinToString-count-any-none-max-min-average

반응형