본문 바로가기
프로그래밍 언어/Kotlin

코테용 코틀린 정리 (3) -배열, List, Set, Map

by fortissimo 2024. 6. 24.

배열


배열 선언

 

arrayOf(): 배열의 초기값을 설정.

Array<T>(Int size) {초기값}: 초기값으로 초기화된 size만큼의 크기를 가진 배열을 선언.

 

 

List, Set, Map 공통

선언 및 초기화 시 타입이 명시되어 있거나 추론할 수 있어야 한다.

ex) val ls1 = mutableListOf()는 list가 어떤 타입인지 알 수 없기 때문에 오류.

      val ls2: List<Int> = mutableListOf()는 Int타입임을 명시했기 때문에 오류 x.

      val ls3 = mutableListOf(1, 2, 3)은 리스트 안에 있는 원소들이 어떤 타입인지 추론 가능하기 때문에 오류 x.

List


- 수정 불가능한 List와 수정 가능한 MutableList가 있다.

 

-선언 및 초기화

  • List: ListOf()
  • MutableList: mutableListOf()

타입을 명시하고 싶다면 선언시 List나 MutableList뒤에 <T>를 붙인다.

fun main() {
    val list1 = listOf("apple", "banana", "grape") //읽기만 가능한 리스트
    val list2 = mutableListOf(1.0, 2.0, 3.2) // 수정 가능한 리스트.
    
    val list: List<Int> = listOf(1, 2, 3)
}

 

 

-원소 접근

  • list[int index]
fun main() {
    val list1 = listOf("apple", "banana", "grape")
    System.out.println(list1[0]) //apple 출력
}

 

 

-멤버 함수(List, MutableList 공통)

  • T first(): 리스트의 맨 첫번째 원소를 반환한다. 리스트가 비어있다면 NoSuchElementException 에러가 발생한다.
  • T last(): 리스트의 맨 마지막 원소를 반환한다. 리스트가 비어있다면 NoSuchElementException 에러가 발생한다.
  • Int count(): 리스트에 있는 원소의 개수를 반환한다.
  • Int indexOf(E element): element의 인덱스를 반환한다. 리스트에 element가 없다면 -1을 반환한다 
  • T? find(Predicate p): 조건 p에 맞는 첫번째 원소를 반환한다. 조건에 맞는 원소가 없다면 null을 반환한다.

 

-멤버 함수(MutableList)

  • Boolean add(E element): 리스트에 element를 추가한다. 리스트가 항상 연산대로 수정되기 때문에 true를 반환한다.
  • Boolean remove(E element): 리스트에 있는 element를 삭제한다. 삭제되었다면 true를 반환, element가 리스트에 없다면 false를 반환한다.
  • E removeAt(Int index): index에 위치한 원소를 지운 후 해당 원소를 반환한다.

 

Set


- 순서가 없고 중복을 허용하지 않는 컬렉션이다.

- 수정 불가능한 Set과 수정 가능한 MutableSet이 있다.

 

-선언 및 초기화

  • Set: SetOf()
  • MutableSet: mutableSetOf()
fun main() {
    val fruits = setOf("apple", "banana", "grape") //읽기만 가능한 set.
    val primes: Set<Int> = mutableSetOf(2, 3, 5) //수정이 가능한 set.
}

 

 

- 원소 접근

  • 특정한 순서가 없기 때문에 특정 인덱스로 접근할 수 없다.
  • for문, foreach문, iterator를 이용하여 전체를 순회하며 접근하도록 한다.

 

- 멤버 함수(Set, MutableSet 공통)

  • Int count(): 리스트에 있는 원소의 개수를 반환한다.
  • T? find(Predicate p): 조건 p에 맞는 첫번째 원소를 반환한다. 조건에 맞는 원소가 없다면 null을 반환한다.

 

- 멤버 함수(MutableSet)

  • Boolean add(E element): 셋에 element를 추가한다. 셋에 element가 추가되었다면 true를 반환하고, 이미 있다면 false를 반환한다.
  • Boolean remove(E element): 셋에 있는 element를 삭제한다. 삭제되었다면 true를 반환, element가 셋에 없다면 false를 반환한다.

 

Map


- <Key, Value>의 쌍으로 데이터를 저장하는 컬렉션.

- 키의 중복은 가능하지만 값의 중복은 불가능하다.

- 수정 불가능한 Map과 수정 가능한 MutableMap이 있다.

 

-선언 및 초기화

  • Map: mapOf()
  • MutableMap: mutableMapOf()

생성과 동시에 map에 원소를 넣고 싶다면 Key to Value를 사용한다.

fun main() {
    val map1 = mapOf("사과" to "apple", "바나나" to "banana", "포도" to "grape") //읽기만 가능한 map
    val map2: Map<String, Int> = mutableMapOf() //수정이 가능한 map.
}

 

- 원소 접근

  • map[Key]로 Value에 접근 가능하다.

- 멤버 함수 (Map, MutableMap 공통)

  • Int count(): 맵에 있는 원소의 개수를 반환한다.
  • Map<Key, Value> filter(Predicate p): 조건 p에 맞는 모든 원소들을 담은 Map을 반환한다. 조건에 맞는 원소가 없다면 빈 map을 반환한다
  • Boolean contains(Key k): 맵에 k에 해당하는 원소가 있는지 확인한다. k가 있다면 true, 없다면 false를 반환한다.
  • Boolean containsKey(Key k): 맵의 키에 k가 있는지 확인한다. k가 있다면 true, 없다면 false를 반환한다.
  • Boolean containsValue(Value v): 맵의 값에 v가 있는지 확인한다. v가 있다면 true, 없다면 false를 반환한다.

- 멤버 함수(MutableMap)

  • V? put(Key k, Value v): 맵에 <k, v>로 이루어진 데이터를 추가(수정)한다. 이전에 맵에 키가 k인 데이터가 없다면 null을 반환하고, 키가 k인 데이터가 있다면 이전 Value를 반환한다.
  • V? remove(Key k): 키 k를 가진 데이터를 삭제한다.