Skip to main content

Collections in scala (2.x)

· 3 min read
hwayoung kim
소주같은 개발자

스칼라의 Collections은 Java의 Collections와 유사하지만, 보다 간결하고 표현력이 높은 API를 제공합니다. 스칼라의 Collections는 변경 불가능하며, 함수형 프로그래밍 패러다임과 잘 어울리는 자료 구조입니다.

정리

ClassDescription
ArrayBufferan indexed, mutable sequence
Lista linear (linked list), immutable sequence
Vectoran indexed, immutable sequence
Mapthe base Map (key/value pairs) class
Setthe base Set class

ArrayBuffer

ArrayBuffer는 변경 가능한 시퀀스입니다. 크기가 가변적이므로, 새로운 값을 추가하거나 삭제하는 것이 가능합니다.

// ArrayBuffer 생성
val myBuffer = ArrayBuffer(1, 2, 3, 4, 5)

// 값 추가
myBuffer += 6

// 값 제거
myBuffer -= 3

// 값 조회
myBuffer(2) // 4

List

List는 변경 불가능한 순서가 있는 시퀀스입니다. List는 새로운 값을 추가하거나 삭제하는 것은 불가능하지만, 새로운 List를 만들어내는 연산은 가능합니다.

// List 생성
val myList = List(1, 2, 3, 4, 5)

// 값 추가
val newList = myList :+ 6

// 값 제거
val anotherList = myList.filter(_ != 3)

// 값 조회
myList(2) // 3

Vector

Vector는 변경 불가능한 시퀀스입니다. List와 마찬가지로 새로운 값을 추가하거나 삭제하는 것은 불가능하지만, 새로운 Vector를 만들어내는 연산은 가능합니다.

// Vector 생성
val myVector = Vector(1, 2, 3, 4, 5)

// 값 추가
val newVector = myVector :+ 6

// 값 제거
val anotherVector = myVector.filter(_ != 3)

// 값 조회
myVector(2) // 3

Map

Map은 키와 값의 쌍으로 이루어진 자료구조입니다. 키는 중복될 수 없으며, 값에는 중복 제한이 없습니다.

// Map 생성
val myMap = Map("one" -> 1, "two" -> 2, "three" -> 3)

// 값 추가
val newMap = myMap + ("four" -> 4)

// 값 제거
val anotherMap = myMap - "two"

// 값 조회
myMap("one") // 1

Set

Set은 중복되지 않은 값들의 집합입니다. 순서가 정해져 있지 않으며, 변경 불가능합니다.

// Set 생성
val mySet = Set(1, 2, 3, 4, 5)

// 값 추가
val newSet = mySet + 6

// 값 제거
val anotherSet = mySet - 3

// 값 조회
mySet.contains(2) // true


Reference