728x90
Collection
배열(array)
길이가 고정된 고정된 자료구조(값을 변경 할 수 있는 순서가 정해진 시퀀스)
val array1 = Array(1, 2, 3)
// 배열의 데이터 접근
scala> array1(0)
res0: Int = 1
// 배열의 데이터 변경
scala> array1(1) = 10
scala> array1(1)
res5: Int = 10
val array2 = Array(3, 4, 5)
// 배열 연결하기 ++
val array3 = array1 ++ array2
// 배열의 앞에 데이터 추가
val array4 = 0 +: array3
// 배열의 뒤에 데이터 추가
val array5 = array3 :+ 100
리스트(list)
가변적인 길이의 데이터를 저장하기 위한 자료구조(값을 변경 할 수 없는 순서가 정해진 시퀀스)
val list1 = List(10, 20, 30, 40)
val list2 = (1 to 100).toList
val list3 = array1.toList
scala> list1
res19: List[Int] = List(10, 20, 30, 40)
scala> list1(0)
res11: Int = 10
scala> list1(3)
res12: Int = 40
scala> list1.head
res17: Int = 10
scala> list1.tail
res18: List[Int] = List(20, 30, 40)
집합(Set)
- 중복을 허용하지 않는 자료 구조
- 전달된 값이 존재하는지 여부를 반환
val s1 = Set(1, 1, 2)
scala> s1
res23: scala.collection.immutable.Set[Int] = Set(1, 2)
// 셋은 전달된 값이 존재하는지 여부를 반환
scala> s1(1)
res26: Boolean = true
scala> s1(2)
res27: Boolean = true
scala> s1(3)
res28: Boolean = false
튜플(tuple)
- 불변의 데이터를 저장하는 자료구조
- 여러가지 값을 저장할 수 있음
- 값에 접근할 때는 _1, _2와 같은 형태로 접근
// 튜플 선언
val hostPort = ("localhost", 80)
scala> hostPort._1
res29: String = localhost
// 패턴매칭 선언
def matchTest(hostPort:(String, Int)) = hostPort match {
case ("localhost", port) => println(s"localhost, $port")
case (host, port) => println(s"$host, $port")
}
val hostPort1 = ("localhost", 80)
val hostPort2 = ("localhost", 8080)
val hostPort3 = ("127.0.0.1", 8080)
scala> matchTest(hostPort1)
localhost, 80
scala> matchTest(hostPort2)
localhost, 8080
scala> matchTest(hostPort3)
127.0.0.1, 8080
맵(Map)
- 사전 형식(key:value)으로 데이터를 저장하는 구조
- 맵의 데이터를 반환하면 Option 타입을 반환
- get을 이용하여 데이터를 반환하기 보다는, getOrElse를 이용하거나, get의 반환값 Option을 패턴매칭을 이용하는 것이 좋음
val map1 = Map(1 -> 2)
val map2 = Map("foo" -> "bar")
// Option 타입 반환
scala> map1.get(1)
res43: Option[Int] = Some(2)
// getOrElse를 이용하여 키와 일치하는 데이터가 없으면 기본값을 반환하도록 설정
scala> map1.getOrElse(1, 0)
res41: Int = 2
scala> map1.getOrElse(10, 0)
res45: Int = 0
scala collection 계층구조
728x90
'language > Scala' 카테고리의 다른 글
[Scala] 스칼라 배우기 7. 스칼라 기본 문법6(반복문, 정렬, 그룹핑, 필터링) (0) | 2023.06.11 |
---|---|
[Scala] 스칼라 배우기 5. 스칼라 기본 문법4(trait, singleton object) (0) | 2023.06.11 |
[Scala] 스칼라 배우기 4. 스칼라 기본 문법3(클래스) (0) | 2023.05.23 |
[Scala] 스칼라 배우기 3. 스칼라 기본 문법2(함수) (0) | 2023.05.22 |
[Scala] 스칼라 배우기 2. 스칼라 기본 문법1(진입점, 객체, 자료형, 문자열, 변수) (0) | 2023.05.14 |
댓글