파티션 - Kotlin의 필터링 기능

6915 단어 androidkotlin
저는 Amit Shekhar , 개발자들이 고임금 기술직을 구하도록 돕는 멘토입니다.

이번 블로그에서는 Kotlin 필터링 함수 - partition 에 대해 알아보겠습니다. 술어로 컬렉션을 필터링하고 일치하지 않는 요소를 별도의 목록에 보관합니다.

이 문서는 원래 amitshekhar.me에 게시되었습니다.

Kotlin에는 유용한 수집 함수가 많이 있습니다. 그것들에 대해 알고 요구 사항에 따라 사용하는 것이 좋습니다. 이러한 수집 기능 중 하나는 partition 입니다.
partition 모음을 조건자로 필터링하고 일치하지 않는 요소를 별도의 목록에 보관합니다.

예제를 통해 알아봅시다.

아래와 같은 data 클래스User를 고려하십시오.

data class User(val id: Int, val name: String, val isMentor: Boolean)


그리고 User 목록:

val users = arrayOf(
    User(1, "Amit", true),
    User(2, "Ronaldo", false),
    User(1, "Messi", true),
    User(3, "Neymar", false))


이제 이 사용자 목록에서 partition 함수를 사용하여 멘토인 사용자와 멘토가 아닌 사용자를 필터링해 보겠습니다.

val (mentors, notMentors) = users.partition { it.isMentor }


이제 인쇄하자mentors
println(mentors)


그러면 다음이 인쇄됩니다.

[User(id=1, name=Amit, isMentor=true),
User(id=1, name=Messi, isMentor=true)]


그리고 인쇄하면notMentors
println(notMentors)


그러면 다음이 인쇄됩니다.

[User(id=2, name=Ronaldo, isMentor=false),
User(id=3, name=Neymar, isMentor=false)]


소스 코드를 살펴보면 다음 구현을 찾을 수 있습니다.

public inline fun <T> Array<out T>.partition(predicate: (T) -> Boolean): Pair<List<T>, List<T>> {
    val first = ArrayList<T>()
    val second = ArrayList<T>()
    for (element in this) {
        if (predicate(element)) {
            first.add(element)
        } else {
            second.add(element)
        }
    }
    return Pair(first, second)
}


그것은 우리가 했을 것과 똑같은 일을 하는 것입니다. 바로 Kotlin이 이러한 유용한 기능을 즉시 사용할 수 있도록 제공하기 때문입니다.

메모:
  • predicate 가 걸립니다.
  • 원래 배열을 목록 쌍으로 분할하고 Pair<List<T>, List<T>> 를 반환합니다.
  • 첫 번째 목록에는 predicatetrue를 생성하는 요소가 포함되어 있습니다.
  • 두 번째 목록에는 predicatefalse를 생성하는 요소가 포함되어 있습니다.

  • 지금은 그게 다입니다.

    감사

    Amit Shekhar

    다음에서 나와 연결할 수 있습니다.


  • GitHub
  • Facebook
  • 좋은 웹페이지 즐겨찾기