1. 기본함수들
[code]
fun main() {
var nameList = listOf(“박수영”, “김지수”, “김다현”, “신유나”, “김지우”, “김지연”, “김지연”)
nameList.forEach{
println(it + ” “)
}
println()
println(“filter: ” + nameList.filter{ it.startsWith(“김”) })
println(“map: ” + nameList.map{ “이름: ” + it })
println(“any: ” + nameList.any{ it === “김지연” })
println(“none: ” + nameList.none{ it.startsWith(“이”) })
println(“first: ” + nameList.first{ it.startsWith(“김”) })
println(“firstOrNull: ” + nameList.firstOrNull{ it.startsWith(“함”) })
println(“first(): ” + nameList.first())
println(“last: ” + nameList.last{ it.startsWith(“김”) })
println(“lastOrNull: ” + nameList.lastOrNull{ it.startsWith(“함”) })
println(“last(): ” + nameList.last())
println(“count: ” + nameList.count{ it.contains(“지”) })
}
[/code]
2. associateBy, groupBy, partition
[code]
fun main() {
data class Person(val name: String, val birthYear: Int)
val personList = listOf(
Person(“유나”, 1992),
Person(“조이”, 1996),
Person(“츄”, 1999),
Person(“유나”, 2003))
// associateBy: 조건에 주어진 키로 새 맵을 반환
println(“associateBy: ” + personList.associateBy{ it.birthYear })
// 조건에 맞는것끼리 묶어서 새 맵을 반환
println(“groupBy: ” + personList.groupBy{ it.name })
// partition: 조건이 참인것과 거짓인것끼리 따로 반환한다
val (over98, under98) = personList.partition { it.birthYear > 1998 }
println(“partition”)
println(” over98: ” + over98)
println(” under98: ” + under98)
}
[/code]
결과
[code]
associateBy: {1992=Person(name=유나, birthYear=1992), 1996=Person(name=조이, birthYear=1996), 1999=Person(name=츄, birthYear=1999), 2003=Person(name=유나, birthYear=2003)}
groupBy: {유나=[Person(name=유나, birthYear=1992), Person(name=유나, birthYear=2003)], 조이=[Person(name=조이, birthYear=1996)], 츄=[Person(name=츄, birthYear=1999)]}
partition
over98: [Person(name=츄, birthYear=1999), Person(name=유나, birthYear=2003)]
under98: [Person(name=유나, birthYear=1992), Person(name=조이, birthYear=1996)]
[/code]
3. flatMap, getOrElse, zip
[code]
fun main() {
val numbers = listOf(-3, 7, 2, -10, 1)
// flatMap: 요소에서 1개씩 flatMap 에 정의된 대로 만들어서
// 하나의 컬렉션으로 합쳐서 반환한다
println(“flatMap: ” + numbers.flatMap { listOf(it * 10, it + 10) })
// getOrElse: 인덱스에 해당하는 값을 가져오되 없으면 중괄호 안에 기본값을 가져온다
println(“getOrElse: ” + numbers.getOrElse(1) { 50 })
println(“getOrElse: ” + numbers.getOrElse(10) { 50 })
val names = listOf(“A”, “B”, “C”, “D”)
// 두 컬렉션을 인덱스로 매칭하여 컬렉션을 만든다.
// 두 컬렉션 중 갯수가 작은 것에 맞게 생성한다
println(“zip: ” + (names zip numbers))
}
[/code]
결과
[code]
flatMap: [-30, 7, 70, 17, 20, 12, -100, 0, 10, 11]
getOrElse: 7
getOrElse: 50
zip: [(A, -3), (B, 7), (C, 2), (D, -10)]
[/code]