상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - 코틀린의 컬렉션 함수 중 map과 filter의 차이는 무엇인가요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
Kotlin의 컬렉션 함수 중 `map`과 `filter`는 모두 컬렉션을 변환하거나 필터링하는 데 사용되는 고차 함수입니다. 그러나 이 두 함수는 그 목적과 동작 방식에서 중요한 차이가 있습니다. 아래에서 이 두 함수의 차이점과 사용 사례를 자세히 살펴보겠습니다. 1. 기본 개념 - map : `map` 함수는 주어진 컬렉션의 각 요소에 대해 변환 함수를 적용하여 새로운 컬렉션을 생성합니다. 즉, 원래의 컬렉션의 각 요소를 다른 형태로 변환하는 데 사용됩니다. 이 과정에서 원래의 요소는 유지되지 않고, 변환된 결과로 새로운 요소가 생성됩니다. - filter : `filter` 함수는 주어진 컬렉션의 각 요소에 대해 조건을 검사하여, 조건을 만족하는 요소만을 포함하는 새로운 컬렉션을 생성합니다. 즉, 원래의 컬렉션에서 특정 조건을 만족하는 요소들만 추출하는 데 사용됩니다. 2. 반환되는 컬렉션의 형태 - map : `map`은 원래 컬렉션의 크기와 동일한 크기의 새로운 컬렉션을 반환합니다. 각 요소가 변환되지만, 요소의 수는 변하지 않습니다. 예를 들어, 리스트의 각 요소를 제곱하는 경우, 원래 리스트의 크기와 같은 크기의 새로운 리스트가 생성됩니다. - filter : `filter`는 조건을 만족하는 요소만을 포함하므로, 반환되는 컬렉션의 크기는 원래 컬렉션의 크기보다 작거나 같을 수 있습니다. 예를 들어, 리스트에서 <a href='https://sangseek.com/sangseeks/짝수/ko'>짝수</a>만 필터링하는 경우, 결과 리스트의 크기는 원래 리스트의 짝수의 개수에 따라 달라집니다. 3. 사용 예시 - map 사용 예시 : ```kotlin val numbers = listOf(1, 2, 3, 4, 5) val squaredNumbers = numbers.map { it * it } pr<a href='https://sangseek.com/sangseeks/intl/ko'>intl</a>n(squaredNumbers) // [1, 4, 9, 16, 25] ``` - filter 사용 예시 : ```kotlin val numbers = listOf(1, 2, 3, 4, 5) val evenNumbers = numbers.filter { it % 2 == 0 } println(evenNumbers) // [2, 4] ``` 4. 결합 사용 `map`과 `filter`는 종종 함께 사용되기도 합니다. 예를 들어, 특정 조건을 만족하는 요소를 필터링한 후, 그 요소들에 대해 변환을 적용할 수 있습니다. ```kotlin val numbers = listOf(1, 2, 3, 4, 5) val result = numbers.filter { it % 2 == 0 }.map { it * it } println(result) // [4, 16] ``` 위의 예시에서는 먼저 짝수만 필터링한 후, 그 짝수들을 제곱하여 새로운 리스트를 생성합니다. 5. 성능 고려사항 `map`과 `filter`는 각각의 요소에 대해 함수를 호출하므로, 컬렉션의 크기가 클 경우 성능에 영향을 미칠 수 있습니다. 특히, `filter`는 조건을 만족하지 않는 요소를 무시하므로, 조건을 검사하는 비용이 발생합니다. 반면, `map`은 모든 요소에 대해 변환 함수를 적용하므로, 변환 함수의 복잡성에 따라 성능이 달라질 수 있습니다. 결론 Kotlin의 `map`과 `filter`는 컬렉션을 다루는 데 있어 매우 유용한 도구입니다. `map`은 각 요소를 변환하여 새로운 컬렉션을 생성하는 데 사용되며, `filter`는 조건을 만족하는 요소만을 추출하여 새로운 컬렉션을 생성하는 데 사용됩니다. 이 두 함수를 적절히 활용하면, 코드의 가독성을 높이고, 복잡한 데이터 처리 작업을 간결하게 수행할 수 있습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기