Kotlin/TIL

TIL 3 (01.23)

내손은개발 🐾 2024. 1. 23. 19:47

작성하다가 컴퓨터가 재부팅되었는데 복구가 안된다,,,,다시 작성


오늘 배운 내용

 

CodeKata
  • 배열선언
1. arrayOf()
 - 파라미터로 받은 값들을 토대로 자동으로 자료형을 추론한다. 또한, 처음 배열을 초기화할 때 여러 종류의 자료형을 섞어서 초기화할 수도 있다.
2. 자료형 ArrayOf()
 - ex) intArrayOf()
 - 해당 자료형만 원소로 가질 수 있다.

(1,2 - 함수의 파라미터로 배열의 원소를 전달받아 배열을 생성한다. 두 방식은 배열이 담을 수 있는 자료형의 종류에 차이가 있다.)
// 예시 코드
var arr1 = arrayOf(1,"hi",3i)
var arr2 = intArrayOf(1,"hi",3i) //컴파일 에러​


3. Array()
 - 뒤에 중괄호로 배열 원소들의 초기값을 추가로 입력해야 한다는 차이가 있다.
 - 중괄호가 비어있다면 Unit 배열이 생성된다.
4. 자료형 Array()
 - ex) IntArrayOf()
 - 초기 값 입력은 선택사항이며 입력하지 않을 경우 숫자열은 0, 문자형은 공백문자, 논리형은 false로 초기화된다.

val arr1 = Array(3) { 1 } // [1,1,1]
val arr2 = IntArray(3) //[0,0,0]
val arr3 = BooleanArray(3) { true } //[true, true, true]
val arr4 = Array(5) {} // Unit 배열
val arr5 = Array(4) //컴파일 에러

  arr5의 경우는 중괄호로 배열 원소들의 초기값을 입력해야 한다. Any와 Any? 이외에 원소들은 arrayOf()와 마찬가지로 초기값을 토대로 자료형을 추론하여 배열을 생성한다.

5.arrayOfNulls()
 - 메서드는 자료형을 지정하고 배열의 크기를 파라미터로 받아 null로 채워진 배열을 생성한다.
 - 이 방법을 사용하면 배열의 초기 값을 null 외에 다른 값으로 설정할 수 없다.

val arr = arrayOfNulls<Int>(5)  //[null,null,null,null,null]
arr[3] = 5  //[null,null,null,5,null]

 

나머지)
val array1 = IntArray(4) { it * 5 } // [5,6,7,8]
val array2 = IntArray(5) { it * it } // [0,1,4,9,16]​
- it은 index 값

// 2차 배열
val arr1 = Array(3) { IntArray(4) } //선언

/** 결과
* [[0,0,0,0],
* [0,0,0,0],
* [0,0,0,0]
* [0,0,0,0]]
* */​

 

참고

 

  • Collection
- 자주 사용하는 기초적인 자료구조를 모아 놓은 일종의 프레임워크로 표준 라이브러리를 제공한다
- 종류로는 List / Map / Set이 있으며 가변형(mutable)과 불변형(imMutable)이 있다. (변수 var val과 비슷한 거 같다)

1. List
 - 순서에 따라 정렬된 요소를 가진다.
val numbers = mutableListOf(1,2,3,4)

numbers.add(5)
numbers.add(1,10)
numbers.addAll(3,listOf(6,7,8))

numbers.removeAt(1)
numbers.remove(3)

numbers[3] = 6​

 

mutable일 경우 설명
add(element) 맨 뒤에 요소 추가
add(index, element) 특정 인덱스 위치에 요소 추가
addAll(index,elements) 특정 인덱스에 컬렉션 추가(index 생략 시 맨 뒤에 추가)
removeAt(index) 특정 인덴스에 있는 값 삭제
remove(element) 특정 요소 삭제
list[index] = value 값 수정

2. Set
 - 중복된 값을 허용하지 않는다.
size 컬렉션의 크기 반환
contains(element) 특정 요소가 Set에 있는지 확인
isEmpty() 아무 값도 포함하고 있지 않을 때 true
numbers == numbersBackwards 크기가 같고 같은 요소를 가지고 있으면 true
mutable일 경우  
add(element) 요소 추가
remove(element) 특정 요소 삭제
remove(filter) 람다 표현식으로 조건 전달

3. Map
 - key-value 구조를 갖는다.
map.entries Map의 key와 value 쌍을 모두 출력
map.keys Map의 key 모두 출력
map.values Map의 value 모두 출력
containsValue(value) 특정 value를 가지고 있는 key 반환
mutable일 경우  
put(key, value) 객체 추가
map[key] = value 배열 방식으로 객체 추가
remove(key) 특정 key값인 쌍을 삭제하고 value값 반환
remove(key,value) key와 value가 일치하는 원소가 있다면 삭제한 후 true 반환


참고

 

  • Filter
코틀린의 filter만한게 없는거 같다. 코드를 많이 생략가능하다. if 문이나 for문을 사용해서 찾아야할 것을 코드 한줄로 가능하다.
val list = listOf("SKT","KT","LG")
list.filter { it.startsWith("S") } // SKT

// or

(0..10).filter { it % 2 == 0 }.sum()​

 

  • first, last
max, min과 비슷하게 사용되고 먼저 나오는 부분과 마지막 부분을 불러올 수 있다.
val list = listOf("a","bb","ccc","dddd")
list.first() // a
list.first{arr -> arr.length > 3} //dddd
list.firstOrNull{ arr -> arr.length > 5} // 없을 경우 Null

//last도 first와 같이 사용된다.​

 

 

 

 


 

 

강의

 

-2주차 완료하였고 로또를 만들어 보았다. 숫자를 전부 랜덤으로 추출하거나 1~5개까지 원하는 숫자를 출력하고 나머지 숫자를 랜덤하게 받을 수 있다.

 

 

 

 

 

 

'Kotlin > TIL' 카테고리의 다른 글

TIL 6 (01.26)  (1) 2024.01.26
TIL 5 (01.25)  (1) 2024.01.25
TIL 4 (01.24)  (0) 2024.01.24
TIL 2 (01.22)  (0) 2024.01.22
TIL 1 (01.19)  (0) 2024.01.19