주어진 조건자를 만족하는 첫 번째 요소를 포함하는 목록을 반환합니다.
public inline fun <T> Iterable<T>.takeWhile(predicate: (T) -> Boolean): List<T> {
val list = ArrayList<T>()
for (item in this) {
if (!predicate(item))
break
list.add(item)
}
return list
}
val chars = ('a'..'z').toList()
println(chars.takeWhile { it < 'f' }) // [a, b, c, d, e]
주어진 조건자를 만족하는 마지막 요소를 포함하는 목록을 반환합니다.
public inline fun <T> List<T>.takeLastWhile(predicate: (T) -> Boolean): List<T> {
if (isEmpty())
return emptyList()
val iterator = listIterator(size)
while (iterator.hasPrevious()) {
if (!predicate(iterator.previous())) {
iterator.next()
val expectedSize = size - iterator.nextIndex()
if (expectedSize == 0) return emptyList()
return ArrayList<T>(expectedSize).apply {
while (iterator.hasNext())
add(iterator.next())
}
}
}
return toList()
}
val chars = ('a'..'z').toList()
println(chars.takeLastWhile { it > 'w' }) // [x, y, z]
takeWhile - Kotlin Programming Language
kotlinlang.org
takeLastWhile - Kotlin Programming Language
kotlinlang.org
'코틀린 > [Filtering] 필터 작업' 카테고리의 다른 글
[Kotlin][Collection] dropWhile / dropLastWhile (0) | 2024.08.28 |
---|---|
[Kotlin][Collection] partition (0) | 2024.08.21 |
[Kotlin][Collection] filter / filterNot / filterIndexed (0) | 2024.08.16 |