greenhelix
greenhelix
greenhelix
08-26 05:31
  • All (229)
    • Algorithm (118)
      • Algorithm (17)
      • Graph (0)
      • Core (6)
      • Python (18)
      • PythonSnippet (4)
      • Java (59)
      • Kotlin (14)
    • Project (0)
    • Study (8)
      • License (5)
      • EIP (3)
    • Programming (63)
      • Android (41)
      • Flutter (1)
      • Bugs Life (21)
      • Linux (0)
    • Tech (32)
      • Tech (17)
      • Drone (4)
      • Hacking (11)
    • Life (6)
      • INGRESS (1)
      • 심시티빌드잇 (0)
250x250

티스토리

hELLO · Designed By 정상우.
greenhelix
Algorithm/Kotlin

Kotlin collections extension function

Kotlin collections extension function
Algorithm/Kotlin

Kotlin collections extension function

2021. 10. 24. 18:37

컬렉션들에 확장함수들을 잘 활용하면 원하는 값을 빠르게 얻을 수 있다. [참고블로그]

 

Filter [공식문서]

# 1~10 까지의 수에서 합이 10이 되는 조합이 몇 종류인지 구해본다.

(1..10).filter{ 10 - it <= 10 } // output: [1, 2, 3, 4, 5]

fun main() { 
    var a = (1..10/2).filter{ 10 - it <= 10 }.count()
    var b = (1..10/2).filter{ 10 - it <= 10 }
    var c = (1..10/2).filter{ 10 - it <= 10 }.size  
    println(a)
    println(b)
    print(c)
}
//5
//[1, 2, 3, 4, 5]
//5

pop 이나 for반복문을 통해서 조건에 만족하는 수의 조합 수를 구할 수는 있지만, 시간이 오래 걸린다. 

filter함수는 이러한 부분을 원할하게 필터링 해준다. 

filter는 Collections에서 원하는 형태로 필터링해주는 함수라고 느껴진다. 

val numbers = listOf("one", "two", "three", "four")  
val longerThan3 = numbers.filter { it.length > 3 }
println(longerThan3)
// output: [three, four]

Partition [공식문서]

val numbers = listOf("one", "two", "three", "four")
val (match, rest) = numbers.partition { it.length > 3 }

println(match)
println(rest)

//[three, four]
//[one, two]

파티션의 경우 filter처럼 조건을 붙여서 원하는 값들의 집합과 속하지 않는 집합을 걸러서 두 집합으로 구분해준다. 

 

Take 

Collection의 앞 혹은 뒤에서부터 얼마만큼의 원소를 가지고 새로운 List를 만들 것인지 결정하는 확장함수이다. 

var a = (0..10).toList().take(3) 
print(a)
// [0, 1, 2]
val chars = ('a'..'z').toList()
println(chars.take(3)) // [a, b, c]
println(chars.takeWhile { it < 'f' }) // [a, b, c, d, e]
println(chars.takeLast(2)) // [y, z]
println(chars.takeLastWhile { it > 'w' }) // [x, y, z]

Takewhile 은 조건 전까지의 반복하여 맞는 것을 가져온다.

TakeLast 는 take의 반대방향으로 작동한다.

TakeLastWhile도 마찬가지다. 

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'Algorithm > Kotlin' 카테고리의 다른 글

sum() sumBy()  (0) 2021.11.02
Kotlin Data Structure  (0) 2021.10.24
emptyList()  (0) 2021.08.05
    'Algorithm/Kotlin' 카테고리의 다른 글
    • sum() sumBy()
    • Kotlin Data Structure
    • emptyList()
    • Kotlin 조건문
    greenhelix
    greenhelix
    개발에 관한 것들과 개인적인 것을 담는 블로그

    티스토리툴바

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.