[코틀린 문법] 리스트
// List(리스트) //
// 데이터를 모아 관리하는 콜렉션 클래스를 상속받는 서브 클래스(List, Set, Map) 중 가장 단순한 형태
// 여러 개의 데이터를 원하는 순서대로 넣어 관리하는 형태
fun main() {
// List //
// 생성시에 넣은 객체 대체/추가/삭제 불가능
// val a : List<String> = listOf("사과", "딸기", "배")
// 코틀린은 알아서 타입추론하기 때문에
// : List<String> 즉 자료형 부분 생략 가능
val a = listOf("사과", "딸기", "배")
println(a[1])
for (fruit in a) {
print("${fruit}:")
}
println()
// : List<Any>일 경우 자료형 아무거나 다 넣을 수 있음
// val anyList : List<Any> = listOf(4,"b",5L)
// 자료형 생략
val anyList = listOf(4,"b",5L)
// 리스트는 배열과 달리 인터페이스
// 객체 가져올 순 있어도 그 값을 직접 바꾸는 것은 불가능
var result = a.get(0)
// Mutable List //
// 생성시에 넣은 객체 대체/추가/삭제 가능
// arrayList 초기화
// val arrList : ArrayList<Int> = arrayListOf<Int>()
// 자료형 생략
val arrList = arrayListOf<Int>()
// var 아니고 val인 이유?
// -> 객체 대체/추가/삭제 (O)
// -> 리스트 자체를 재정의 (X)
arrList.add(10)
arrList.add(20)
// arrList = arrayListOf()
// Kotlin: Val cannot be reassigned
val b = mutableListOf(6, 3, 1)
println(b)
// add(데이터 추가)
b.add(4)
println(b)
// add(데이터, 인덱스 추가)
b.add(2, 8)
println(b)
// remove(데이터 삭제)
// removeAt(인덱스 삭제)
b.removeAt(1)
println(b)
// shuffle(랜덤, 순서 섞기)
b.shuffle()
println(b)
// sort(정렬)
b.sort()
println(b)
val cards = mutableListOf("Jack", "Queen", "King")
println(cards)
cards.add("Ace")
println(cards)
cards.remove("Jack")
println(cards)
// 전부 비우기
cards.clear()
println(cards)
// 데이터 변경
// list[인덱스] = 데이터
}
fun main() {
// 리스트 만드는 방법 (1)
val testList1 = ArrayList<String>()
testList1.add("a")
testList1.add("b")
testList1.add("c")
println(testList1)
// 리스트 만드는 방법 (2)
val testList2 = listOf("a", "b", "c")
println(testList2)
// 리스트 만드는 방법 (3)
val testList3 = mutableListOf<String>("a", "b", "c")
println(testList3)
testList3.add("d")
println(testList3)
// 리스트 출력
val testList6 = listOf("a", "b", "c","d", "e", "f")
// 관습적으로 i로 씀 -> 다른 알파벳이어도 노상관
for (i in testList6) {
print(i)
}
// list는 추가/제거를 못 함
val testList1 = listOf("a", "b", "c")
println(testList1)
println(testList1[0])
// [a, b, c]
// a
// 이렇게 만들면 추가/제거 불가능
// testList1.add("d")
// mutable list는 추가/제거 가능
val testList2 = mutableListOf("a", "b", "c")
println(testList2)
// [a, b, c]
// "d" 추가
testList2.add("d")
println(testList2)
// [a, b, c, d]
// "a" 제거
testList2.remove("a")
println(testList2)
// [b, c, d]
}
// List Format(리스트 가공) //
fun main() {
val testList1 = mutableListOf<Int>()
testList1.add(1)
testList1.add(2)
testList1.add(3)
testList1.add(4)
testList1.add(10)
testList1.add(10)
testList1.add(11)
testList1.add(11)
println(testList1)
// [1, 2, 3, 4, 10, 10, 11, 11]
// 중복 제거
println(testList1.distinct())
// [1, 2, 3, 4, 10, 11]
// 최대값
println(testList1.maxOrNull())
// 11
// 최소값
println(testList1.minOrNull())
// 1
// 평균값
println(testList1.average())
// 6.5
// 필터
val testList2 = listOf("john", "jay", "minsu", "minji", "suji", )
val result1 = testList2.filter {
it.startsWith("m")
}
println(result1)
// [minsu, minji]
val testList3 = listOf(1, 2, 3, 4, 5)
val result2 = testList3.filter {
// 글자수를 2로 나눴을 때 나머지가 0인 이름
// 즉 글자수가 짝수인 경우만 출력
it % 2 == 0
}
println(result2)
// [2, 4]
val testList4 = listOf("a", "aa", "aaa", "aaaa")
val result3 = testList4.groupBy {
// 글자수가 2 초과면 true로 묶고
// 글자수가 2이하면 false로 묶음
it.length > 2
}
println(result3)
// {false=[a, aa], true=[aaa, aaaa]}
}
참고
반응형
'개발(Android) > kotlin syntax' 카테고리의 다른 글
[Kotlin syntax] Null Safety (0) | 2022.04.07 |
---|---|
[Kotlin syntax] String Formatting (0) | 2022.04.07 |
[Kotlin syntax] Generic (0) | 2022.04.07 |
[Kotlin syntax] Polymorphism (0) | 2022.04.06 |
[Kotlin syntax] Observer Pattern, Anonymous Objects (0) | 2022.04.06 |