Collection 이란 데이터를 저장하는 기본 자료 구조들을 한 곳에 모아 관리와 사용을 편하게 하기 위해 제공하는 프레임워크로 크게 List, Set, Map 으로 나뉜다.
collection 안에 있는 object들을 elements 또는 items라고 부른다.
그 이유로는 표준 자바 컬렉션을 활용하면 자바 코드와 상호작용하기가 훨씬 더 쉽기 때문이다. 즉 자바에서 코틀린 힘수를 호출하거나 코틀린 에서 자바 함수를 호출할 때 자바와 코틀린 컬렉션을 서로 변환할 필요가 없다.
그러나 코틀린에서는 자바보다 더욱 많은 Collection의 기능을 사용할 수 있다. 코틀린 인 액션에서는 다음과 같이 마지막 원소를 가져오거나 수로 이뤄진 컬렉션에서 최댓값을 찾는 예시를 제공한다.
fun main() {
val strings = listOf("first", "second", "third")
println(strings.last())
val numbers = setOf(1,14,2)
println(numbers.max())
}
answer:
third
14
vararg 키워드를 사용하여 가변 길이 인자(인자 개수가 달라질 수 있는) 함수를 정의할 수 있다. 자바에서는 배열을 인자로 넘기는 과정만 있다면, 코틀린에서는 배열의 각 원소가 명시적으로 인자로 전달되게 해야한다. 아래 예제와 같이 배열 앞에 *(spread 연산자)를 붙이기만 하면 된다.
fun main(args: Array<String>) {
val list = listOf("args: ", *args)
println(list)
}
인자가 하나뿐인 함수는 중위(infix)함수 호출 구문을 통해 메소드 호출을 간편화 할 수 있다. 중위 호출 시에는 수신객체와 유일한 메소드 인자 사이에 메소드 이름을 넣으며 객체, 메소드 이름, 유일한 인자 사이에는 공백이 들어가야 한다.
to ("one") //일반적인 방법
to "one" // 중위 호출 방식
구조 분해 선언(destructuring declaration)을 사용하면 복합적인 값을 변수로 분해할 수 있다. 아래 예시처럼 Pair를 두 변수로 즉시 초기화가 가능하다.
val (number, name) = 1 to "one"
공감하며 읽었습니다. 좋은 글 감사드립니다.