Kotlin은 기본적으로 모든 타입의 값을 객체로 다룬다
->여러 타입의 값을 동시에 담을 수 있다.
배열
var 이름 : Array<타입> = Array<타입>(크기){초기}
var 이름 = arrayOf(값) ^ 생략가능
인덱스를 기반으로 값에 접근 가능, 검색 용이
여러 자료형의 값을 같이 넣을 수 있다.
초기화할 때부터 크기가 고정되어 있어
-설정된 크 이상으로 값을 추가할 수 없다.
-값을 삭제하더라도 크기가 줄어들지 않는다. -> 메모리 낭비
var array :Array<Int> = Array(4){15} // [15, 15, 15, 15] 크기가 4이고 초기값이 15
// arrayOf메소드를 호출
var arr = arrayOf(1,2,3,4,5) // [1, 2, 3, 4, 5]
var arr2 = arrayOf(3, "e",6) // [3, e, 6]
var arr3 = emptyArray<Int>() // Int 타입의 빈 배열
// 배열요소를 모두 출력합니다
println(Arrays.toString(arr)) //[1, 2, 3, 4, 5]
println(arr.contentToString()) //[1, 2, 3, 4, 5]
// arr[0]은 하나의 변수로 취급할 수 있습니다
println(arr[0]) //1
배열을 그대로 출력하면 객체 정보(해시코드)가 출력되기 때문에
Arrays.toString(배열) 또는 배열.contentToString()
메소드를 이용해서 출력한다.
컬렉션
리스트
불연속적인 메모리 공간 점유 -> 메모리 관리 용이
list
읽기 전용 불변형 리스트
mutablelist
수정 가능
arraylist
배열을 기반으로 하기 때문에 고유한 인덱스가 할당되어 있어 빠른 인덱스 기반 접근이 가능
// 읽기전용 리스트
// 값을 변경할 수 없습니다
val scores1 = listOf(1, 2, 3) // [1, 2, 3]
val scores11 = List(3){0} // 크기가 3이고 초기값이 0 [0, 0, 0]
// 수정가능 리스트
var scores2 = mutableListOf(4, 5, 6) // [4, 5, 6]
scores2[1]=66 // [4, 66, 6]
scores2.add(0, 5) // [5, 4, 66, 6]
scores2.remove(4) // remove(값) removeAt(인덱스)
// 수정가능 리스트
// array로 데이터들을 저장
// 저장할 데이터의 자료형을 < > 안에 지정해야 사용할 수 있어요
// 생성자를 통해 초기 용량을 지정
// 초기값을 바로 넣을 때는 arrayListOf<>() 메소드 사용
// 초기용량 이상으로 값을 추가할 수 있다
var scores3 = ArrayList<Int>(1) // []
var scores4 = arrayListOf<Int>(4, 5, 9, 6, 44) // [4, 5, 9, 6, 44]
scores3.add(10) // [10] 값 추가
scores3[0]=1 // [1]
println(scores4.get(2)) // [9]
scores4.remove(4) // [5, 9, 6, 44] 특정값 삭제
맵
키와 쌍으로 이루어진 자료형
키값으로 value 를 조회
map
읽기전용 불변형
mutableMap
수정 가능
// 읽기전용
// 변수명[키]로 데이터에 접근할 수 있습니다
var scoreInfo1 = mapOf("kor" to 94, "math" to 90, "eng" to 92)
println(scoreInfo1["kor"]) // 94
// 수정가능 맵입니다
// 변수명[키]로 데이터에 접근할 수 있습니다
var scoreInfo2 = mutableMapOf("kor" to 94, "math" to 90)
scoreInfo2["eng"] = 92 // key-value 추가 scoreInfo2.put("eng", 92)m
println(scoreInfo2["eng"]) //92
// 맵의 키와 값을 동시에 추출해서 사용할 수 있습니다
for((k,v) in scoreInfo2) {
println("${k}의 값은 ${v}입니다")
}
// kor의 값은 92입니다
//math의 값은 90입니다
//eng의 값은 92입니다
SET
중복 없이 데이터를 관리하는 집합 자료
요소가 존재하는지에 집중
// 읽기전용 Set
var birdSet = setOf("닭", "참새", "비둘기")
// 수정가능 Set
var mutableBirdSet = mutableSetOf("닭", "참새", "비둘기")
mutableBirdSet.add("꿩")
mutableBirdSet.remove("꿩")
println("집합의 크기는 ${birdSet.size} 입니다")
var findBird = readLine()!!
if(birdSet.contains(findBird)) {
println("${findBird} 종류는 존재합니다.")
} else {
println("${findBird}는 존재하지 않습니다.")
}
집합
- 합집합 .union()
- 교집합 .intersect()
- 차집합 .subtract()
// 귀여운 새의 집합
var birdSet = setOf("닭", "참새", "비둘기", "물오리")
// 날수있는 새의 집합
var flyBirdSet = setOf("참새", "비둘기", "까치")
// 모든 새의 집합 (합집합) [닭, 참새, 비둘기, 물오리, 까치]
var unionBirdSet = birdSet.union(flyBirdSet)
// 귀엽고 날수있는 새의 집합 (교집합) [참새, 비둘기]
var intersectBirdSet = birdSet.intersect(flyBirdSet)
// 귀여운 새들중에서 날수없는 새의 조합 (차집합) [닭, 물오리]
var subtractBirdSet = birdSet.subtract(flyBirdSet)
'왕초보일지' 카테고리의 다른 글
231218 TIL Spring 입문 1주차 강의 (1) | 2023.12.18 |
---|---|
231215 TIL (1) | 2023.12.15 |
231213 TIL 해시코드출력현상/싱글턴 (0) | 2023.12.13 |
231212 TIL 스레드 참조 (0) | 2023.12.12 |
계산기 해봐야 할 것 (0) | 2023.12.11 |