이 글은 Android12 및 코틀린 완전 정복를 참고하여 작성하였습니다.
작성자 : 김인겸
개발환경은 Windows, Android Studio입니다.
1. Array : 배열
생성식 - val numbers : Intarray = IntArrayOf(1, 2, 3, 4)
- 배열을 생성할 때, val을 쓰는 이유는?
var 을 사용하게 되면, Variable is never modified so it can be declared using 'val' 이라는 문장이 나타나게 된다. 이는 우리가 생성하는 객체는 변화할 수 없으니 val변수를 사용하는 것을 권장한다는 의미이다.
출력식 - 일반 출력식 불가능하므로, 유틸리티 메소드를 이용한다
for (element in numbers)
print(element)
&
print(numbers.ContentToString())
- 배열에서의 인덱스
Array {1, 2, 3, 4, 5}가 있을 때, 이 배열에서의 인덱스는 [0, 1, 2, 3, 4] 의 순서이다. 모든 배열식에서의 인덱스는 0에서 부터 시작한다는 것을 알 수 있다.
- Array 내 요소 교체
numbers[0] = 6
{1, 2, 3, 4, 5} - > {6, 2, 3, 4, 5}
numbers[6] = 8
out of bound error 발생 - (인덱스 6 번은 존재하지 않기 때문이다.)
- 배열 내 다양한 객체 포함시키기
data class 이용
data class Fruit (val name : String, val price : Double)
val fruits = array of (Fruit("Apl", 2.5), Fruit("Man", 3.0))
출력 - > Fruit(name = Apl, price = 2.5), Fruit(name = Man, price = 3.0)
indices 함수 = 인덱스가 무엇인지 알려준다.
for (index in fruits.indices){ print("$fruits[indes].name is $index")}
출력 - > Apl is 0 Man is 1
- 다양한 데이터타입 사용가능
val mix = arrayOf("A", "B", "1", "2", Fruit("Apl", 2.5))
arrayOf 사용시 다양한 데이터타입 사용 가능함
- Array 는 배열 내의 요소들의 교체는 가능하나, 요소들을 추가하거나, 제거할수 없습니다.
2. List : 리스트
생성식 - val months = listOf{"jan", "feb", "mar"}
&
val any = listOf{"jan", "feb", "1", "2", False, True)
- List의 특징
● List 는 Array와 마찬가지로, size, index, for 루프 등의 다양한 메서드와 프로퍼티를 사용할 수 있다.
● immutable한 List가 존재하므로, 리스트 내의 아이템을 추가하기 위해서는 mutable 리스트로 변환시켜줘야 한다.
val addionalMonths = months.toMutableList()
val newMonths = arrayOf("apr", "may", "june")
addionalMonths.addAll(newMonths)
addionalMonths.add("jul")
print(addionalMonths)
- 출력 - > [jan, feb, mar, apr, may, june]
● List 내의 아이템들은 제거와 추가가 가능하다.
val days = mutableListOf<String>("mon", "tue", "wed")
days.add("thu")
days[2] = "sun"
days.removeAt(3)
val removeList = mutableListOf<String>("mon", "wed")
days.removeAll(removeList)
print(days)
- 출력 - > [tue, sun]
3. Set : 집합
생성식 - val fruits = setOf("orange", "mango", "orange", "apple")
- Set 의 특징
● 중복된 요소를 하나로 통합시킨다. 따라서 위의 집합의 사이즈 는 3이다.
● .toSortedSet() 함수 이용시, 위 요소들을 알파벳 순서대로 나열한다. - [apple, mango, orange]
● immutable한 Set 이 존재하므로, 집합 내의 아이템을 추가하기 위해서는 mutable Set으로 변환시켜줘야 한다.
val newFruits = fruits.toMutableList()
newFruits.add("Water Melon")
newFruits.add("pear")
- 출력 - > [orange, mango, orange, apple, Water Melon, pear]
4. Map
생성식 - val daysOfweek = mapOf(1 to "Mon", 2 to "Tue", 3 to "Wed")
- Map 의 특징
● Key 값을 따로 정의한다. ("Mon"의 키값은 1이므로 위 Key 값을 이용하여 출력한다)
● .toSortedSet()함수 사용시, 키 값의 크기 순으로 배열한다.
● dataclass를 이용하여 댜양한 데이터 값을 Collection에 저장할 수 있다.
● immutable한 Map 이 존재하므로, 집합 내의 아이템을 추가하기 위해서는 mutable Map으로 변환시켜줘야 한다.
- List, Set, Map 은 Collection이라고 말한다. 그렇다면 이러한 Collection들을 왜 불변한 것으로 정의한 후 , 가변으로 변환시켜주는가?
코틀린은 불변성이 강제되는 프로그래밍 언어가 아니기에, 불변성을 부여하면 안정성이 높아진다. 때문에 코틀린에서는 불변성을 부여한 다음 가변성을 부여하는 것을 권장한다.
5. ArrayList
생성식 - ArrayList<E>() : 기본 생성식
&
ArrayList(elements : Collection<E>) : 특정 Collection으로 채움
&
ArrayList(Capacity : Int값) : 최대 크기를 결정
- ArrayList 의 특징
● Array - 배열의 크기가 정해진다. 값을 추가하거나 제거할 수 없다.
● List - List내의 값을 수정할 수 없다.
● ArrayList - 위 두 단점들을 보완하는 배열로, 크기가 정해지지 않고, 값을 수정, 추가, 제거할 수 있다.
- ArrayList 함수의 종류
● Add : 추가 ● Clear : 모든 요소 제거 ● Get : 특정 인덱스 값을 돌려줌
● Remove : 특정 요소 제거
등 다양한 함수를 사용할 수 있다.
6. Lambda : 람다식
생성식 - val sum : (Int, Int) -> Int = {a : Int, b : Int -> a+b}
println(sum(10, 5))
&
val sum : {a : Int, b : Int -> println(a + b)}
sum(10, 5)
- Lambda식의 특징
● 이름이 없는 함수[익명함수]의 형태이다.
● 불필요한 루프문의 삭제가 가능하여 간결하게 나타낼 수 있다.
이상으로 블로그 포스팅을 마치겠습니다. 감사합니다.
'GDSC HUFS 4기 > Kotlin Team #3' 카테고리의 다른 글
[3팀] Android-12-Kotlin : 분 단위 나이 계산기 (0) | 2022.11.03 |
---|---|
[3팀] Android-12-Kotlin : 코틀린 계산기 - XML사용법과 UI생성법 배우기 (Onclick-OnOperator) (0) | 2022.11.03 |
[3팀] Android-12-kotlin : 접근제어자, 중첩 클래스, Safe Cast, 예외처리 (1) | 2022.10.08 |
[3팀] Android-12-kotlin : OOP, Class, 섀도잉 (0) | 2022.10.07 |
[3팀] Android-12-kotlin Interface and Abstract class (1) | 2022.10.07 |