1. 컬렉션 이란?
- 코틀린(Kotlin)도 자바와 마찬가지로 컬렉션 프레임워크를 제공합니다. 하지만 코틀린의 컬렉션 프레임워크는 자바의 것과는 약간 다르며, 더 간결하고 표현력이 풍부하도록 설계되었습니다. 코틀린의 컬렉션은 크게 두 가지 주요 카테고리로 나누어집니다: 읽기 전용(immutable)과 수정 가능한(mutable) 컬렉션입니다.
- 읽기 전용 컬렉션 (Immutable)
- List: 순서가 있는 요소의 집합입니다. (예: listOf())
- Set: 중복을 허용하지 않는 요소의 집합입니다. (예: setOf())
- Map: 키와 값 쌍으로 이루어진 요소의 집합입니다. (예: mapOf())
- 수정 가능한 컬렉션 (Mutable)
- MutableList: 순서가 있는 요소의 집합으로, 요소의 추가 및 제거가 가능합니다. (예: mutableListOf())
- MutableSet: 중복을 허용하지 않는 요소의 집합으로, 요소의 추가 및 제거가 가능합니다. (예: mutableSetOf())
- MutableMap: 키와 값 쌍으로 이루어진 요소의 집합으로, 요소의 추가 및 제거가 가능합니다. (예: mutableMapOf())
- 확장 함수를 사용하여 컬렉션에 다양한 유틸리티 함수를 제공합니다. 예를 들면, filter, map, reduce, 리스트 마지막 원소를 가져오거나, 최댓값 찾기 등의 함수를 쉽게 사용할 수 있습니다.
2. 확장 함수란?
- 확장 함수는 어떤 클래스의 멤버 메서드인 것처럼 호출할 수 있지만 그 클래스 밖에 선언된 함수이다.
- 확장 함수를 만들려면 추가하려는 함수 이름 앞에 그 함수가 확장할 클래스의 이름을 덧붙이기만 하면 된다. 클래스 이름을 수신 객체 타입이라 부르며, 호출되는 대상이 되는 값을 수신 객체라고 부른다.
- 확장함수는 오버라이드 불가능
- String에 대한 확장 함수예시:
- isAlphanumeric: 문자열이 알파벳과 숫자만으로 이루어져 있는지 확인
- reverse: 문자열을 역순으로 반환
- toCamelCase: 문자열을 카멜케이스로 변환
- toSnakeCase: 문자열을 스네이크 케이스로 변환
- capitalizeFirstLetter: 첫 글자만 대문자로 변환
- Int에 대한 확장 함수예시:
- isEven: 정수가 짝수인지 확인
- isPositive: 정수가 양수인지 확인
- isNegative: 정수가 음수인지 확인
- toBinaryString: 정수를 2진수 문자열로 변환
- isPrime: 정수가 소수인지 확인
- List<T>에 대한 확장 함수예시:
- swap: 리스트 내 두 요소의 위치를 교환
- randomElement: 리스트에서 임의의 요소 반환
- partitionBy: 주어진 조건에 따라 리스트를 두 개로 분리
- removeDuplicates: 중복된 요소를 제거한 새 리스트 반환
- String에 대한 확장 함수예시:
코틀린의 최대 장점 중 하나는 확장함수라고 생각한다. 확장함수를 더 많이 알고 경험하고 공부해서 코드를 더욱 알차게 만들고 싶다. 확장함수만 잘 사용해도 코드를 더욱더 간결하게 할 수 있다고 생각이 든다. 컬렉션도 읽기 가능한 컬렉션, 수정 가능한 컬렉션이 있으니 이 부분을 잘 사용해서 보안적으로 철저히 해야할 부분은 읽기 가능하게 해야겠다. 컬렉션에도 다양한 확장함수가 있으니 꼭 공부하자!
'기초를 모르면 나가리(코틀린 인 액션)' 카테고리의 다른 글
코틀린 constructor 주생성자, 부생성자 (1) | 2023.10.27 |
---|---|
코틀린 기초 람다식 , 람다 프로그래밍 (0) | 2023.10.20 |
코틀린 클래스, 객체, 인터페이스 (0) | 2023.10.17 |
코틀린 기본구조, 변수 선언 등 기초 설명 (0) | 2023.08.29 |
코틀린이란? 특징, 장점 및 정적타입과 함수형 프로그래밍 (0) | 2023.08.28 |