일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- add view
- kotlin collection
- 컬렉션 함수
- programmers # 프로그래머스 #큰수비교 #cmp_to_key()
- 내용의동일성
- Kotlin Generic
- 프로그래머스
- 코틀린 문자열
- kotlin addview
- collection function
- 해시
- class
- 객체의 동일성
- 코틀린 data class
- kakao blind
- kotlin listview
- 코틀린 제너릭
- 컬렉션함수
- Kotlin
- 코틀린 컬렉션함수
- 코틀린 내부 클래스
- 코틀린
- 프로그래머스 #탐욕법 #큰수만들기 #join #python
- lateinit
- 코틀린 람다함수
- kotlin recyclerview
- 카카오 순위검색
- 코틀린 lateinit
- isNullOrBlank
- 코틀린 중첩클래스
- Today
- Total
엔지니어 규의 IT 프로그래밍 다이어리
[Kotlin] 26. 컬렉션 함수(1) 본문
지금까지 우리는 collection을 for(item in collection) 문으로 반복하여 포함된 아이템을 하나하나 꺼내어 사용했었다.
하지만 코틀린은 함수형 언어의 특징을 가지고 있기 때문에 좀더 편리하게 컬렉션을 사용할 수 있는데 컬렉션 함수를 사용하면된다.
컬렉션 함수는 list나 set, map과 같은 컬렉션 또는 배열에 일반 함수 또는 람다 함수 형태를 사용하여 for문 없이도 아이템을 순회하며 참조하거나 조건을 걸고, 구조의 변경까지 가능한 여러가지 함수를 지칭한다.
forEach : 컬렉션 객체에 사용하게 되면 중괄호 안에서 컬렉션안에 포함된 모든 item을 it이라는 변수로 순서대로 참조할 수 있다.
collection.forEach{
println(it)
}
filter : 중괄호안에서 it에 조건을 걸면 조건에 맞는 객체만 다시 컬렉션으로 만들어서 반환해준다.
collection.filter{
it < 4
} //4 이상인것만 반환한다.
map : 중괄호안에서 it에 수식을 적용하여 값을 변경하면 그 값을 컬렉션으로 만들어 반환시켜준다. 일괄적으로 값을 변경해줄 수 있다.
collection.map{
it * 2
} // collection 내부의 값 * 2 를 반환한다.
any, all , none
collection.any{it == 0} // 하나라도 조건에 맞으면 true 반환
collection.all{it == 0} // 모두 조건에 맞으면 true 반환
collection.none{it == 0} // 하나도 조건에 맞지 않으면 true 반환
first : 일반 함수로 사용하는 경우 첫번째 객체를 반환하지만, 람다함수 형태로 it의 조건을 걸어주면, 조건에 맞는 첫번재 객체를 반환한다.
last : 일반 함수로 사용하는 경우 마지막 객체 반환, 람다함수로 사용시 조건에 맞는 마지막 객체 반환
collection.first() //첫번째 객체 반환
collection.first{it > 4} // 4이상인 첫번째 객체 반환
collection.last() //마지막 객체 반환
collection.last{it > 4} // 4이상의 마지막 객체 반환
first, last를 각각 find, findLast 로 대체할 수 도 있다.
collection.find{it >4} // 4 이상인 첫번재 객체 반환
collection.findLast { it >4 } // 4이상인 마지막 객체 반환
first와 last 함수를 사용할때 문제가 생길 수 있는데, 조건에 맞는 객체가 없는 경우 NoSuchElement Exception이 발생 할 수 있다.
{find 는 조건에 맞는 객체가 없으면 null 값을 반환하기 때문에, 오류 발생을 막기위해 find를 사용하는것이 더 나을 수 있다.}
이때는 firstOrNull, lastOrNull 을 반환해주면 객체가 없는경우 'null'을 반환해준다.
collection.firstOrNull{it>4}
collection.lastOrNull { it>4 }
count : 일반 함수로 사용하면 포함된 모든 item 개수를 반환하며, 중괄호와 함께 it에 조건을 걸면 조건에 맞는 item 개수를 반환한다.
collection.count() //item 개수 반환
collection.count{it > 4} // 4이상인 item 개수 반환
컬렉션함수들을 사용하면 반복문과 조건문을 사용하는경우의 대부분을 대체 할 수 있다.
fun main(){
val nameList = listOf("박수영", "김지수","김다현", "신유나","김지우")
nameList.forEach{print(it + "")} // 박수영김지수김다현신유나김지우
println()
println(nameList.filter{it.startsWith("김")}) // [김지수, 김다현, 김지우]
println(nameList.map{"이름 : " + it}) //[이름 : 박수영, 이름 : 김지수, 이름 : 김다현, 이름 : 신유나, 이름 : 김지우]
println(nameList.any{ it == "김지연"}) // false
println(nameList.all{it.length == 3}) // true
println(nameList.none{it.startsWith("이")}) // true
println(nameList.first{it.startsWith("김")}) // 김지수
println(nameList.last{it.startsWith("김")}) // 김지우
println(nameList.count{it.contains("지")}) // 2
}
컬렉션함수는 람다함수를 사용하여 컬렉션을 좀더 편리하게 조작할 수 있는 장점을 가진 함수로
경우에 따라 반복문과 조건문대신 사용하면 편리하다.
'프로그래밍 언어 > 코틀린' 카테고리의 다른 글
[Kotlin] 28. 변수의 고급 기술. 상수, lateinit, lazy (0) | 2022.06.03 |
---|---|
[Kotlin] 27. 컬렉션 함수(2) (0) | 2022.06.02 |
[Kotlin] 25. Set 과 Map (0) | 2022.06.01 |
[Kotlin]24. Data class 와 Enum Class (0) | 2022.06.01 |
[Kotlin] 23. 중첩 클래스와 내부클래스 (1) | 2022.05.31 |