불로구

[코틀린 기초] 11. 컬렉션 (List, Set, Map) 본문

프로그래밍/코틀린

[코틀린 기초] 11. 컬렉션 (List, Set, Map)

맹이맹이 2021. 3. 1. 14:36
반응형

컬렉션이란 하나의 자료구조를 말한다.

이번에는 컬렉션의 가장 기본인 List, Set, Map을 알아보자

 

그전에 코틀린에는 변경이가능한 컬렉션과 변경이 불가능한 컬렉션으로 나누어진다.

 

1. Immutable Collection (변경 불가능)

- 한번 선언하면 출력외에 변경이나 추가를 할 수 없다.

2. Mutable Collection (변경 가능)

- 선언 후 추가와 같은 기능이 가능

 

List

- 일반적으로 List는 ArrayList, LinkedList, Vector등 여러가지가 존재하지만 이건 자료구조 카테고리에 따로 포스팅 하겠습니다.

- List는 객체를 일렬로 놓은 구조를 말합니다.

- 각 객체들을 인덱스(index)로 관리를 하며 각 객체를 검색, 추가를 할때 사용됩니다.

- 리스트는 객체 자체를 저장하는 것이 아닌 객체의 번지를 참조합니다.

( Immutable )

val numberList = listOf<Int>(1,2,3)

println(numberList)
println(numberList[0])
println(numberList.get(0))

- numberList라는 이름의 Int타입 리스트 컬렉션을 생성하고 초기값으로 1,2,3을 지정했습니다.

- numberList를 출력하면 모든 요소들이 출력됩니다.

- List는 인덱스를 통해 검색 추가 삭제가 가능하다고 했었듯이, 이름[index]를 or 이름.get(인덱스)를 통해 특정 값을 추출할 수 있습니다.

 

( Mutable )

val mList = mutableListOf<Int>(1,2,3)
mList.add(15)
mList.add(3,20)
mList.forEach{
    println(it)
}

- List를 생성 시 mutable이라는 이름을 앞에 사용하여 생성하면 데이터를 추가할 수 있다.

- 우선 15를추가 했다. 일반적으로 인덱스를 지정하지 않으면 다음 인덱스에 추가가 된다 ( 1, 2, 3, 15 )

- 그다음은 3번째 인덱스에 20을 추가했다. -> ( 1, 2, 20, 15 ) -> 3번째에 20이추가되고 15가 4번째로 바뀐다.

- 참고로 인덱스는 0부터 시작한다.

 

Set

- Set은 순서가 없으며, 데이터의 중복을 허용하지 않는다.

- Set에 종류에는 HashSet , LinkedHashSet, TreeSet등이 존재한다.

( Immutable )

var numberSet = setOf<Int>(1,2,3,3,3,3)
println(numberSet)
numberSet.forEach{
    println(it)
}

- Int타입의 Set 컬렉션을 생성했고, 초기값으로는 1, 2, 3, 3, 3, 3을 지정했다.

- Set의 경우는 중복을 허용하지 않는다고 했듯이 출력을 하면 1, 2, 3만 출력이 된다.

 

( Mutable )

val mSet = mutableSetOf<Int>(1,2,3,3,3,3)
mSet.add(10)
mSet.forEach{
    println(it)
}

- Set도 마찬가지로 List와 같은 형식으로 생성하면 된다.

 

Map

- Map은 Key와 Value의 쌍으로 Entry 객체를 저장하는 구조이다.

- key는 중복이 불가능하지만, value는 중복이 가능하다.

- 동일한 Key값을 추가한다면, 원래의 Key값은 없어진다.

- Map에는 HashMap, HashTable, LinkedHashMap, TreeMap등이 존재한다.

( Immutable )

var numberMap = mapOf<String, Int>("first" to 1 , "second" to 2, "third" to 3)
println(numberMap.get("first"))
println(numberMap.get("second"))
println(numberMap.get("third"))

- Map을 생성할 시 Key의 타입과, Value의 타입을 지정해주며 to키워드를 사용하여 생성한다.

- 출력은 앞에서 인덱스를 사용한 것과 다르게, 키값을 이용하여 값을 출력한다.

 

( Mutable )

val mMap = mutableMapOf<String, Int>("first" to 1)
mMap.put("second", 2)
println(mMap)

- 생성시에는 to키워드를 사용하여 지정했지만 데이터를 추가할 시 키와 , value를 put을 통해 추가한다.

반응형
Comments