불로구
[코틀린 기초] 11. 컬렉션 (List, Set, Map) 본문
컬렉션이란 하나의 자료구조를 말한다.
이번에는 컬렉션의 가장 기본인 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을 통해 추가한다.
'프로그래밍 > 코틀린' 카테고리의 다른 글
[코틀린 기초] 13. 클래스(Class) <1> (0) | 2021.03.04 |
---|---|
[코틀린 기초] 12. 반복문 (for, forEach) (0) | 2021.03.01 |
[코틀린 기초] 10. when 조건문 (0) | 2021.02.22 |
[코틀린 기초] 9. 함수형 프로그래밍(2) (0) | 2021.02.15 |
[코틀린 기초] 8. 함수형 프로그래밍 (0) | 2021.02.14 |