본문 바로가기

프로그래밍/Scala

Scala Array 문법

 

스칼라에서 리스트는 변경 불가능한 특징이 있어서 array를 공부하게 되었다.

일단 교수님께서는 계속 해서 def나 val 만 사용하라고 하시는데 val은 한 번 선언하면 그 값을 바꿀 수 없다는 특징이 있다. 하지만 array는 val로 선언을 하더라도 그 내부 값을 내가 직접 설정할 수 있다.

 

1. Array 생성

(1) 배열의 크기를 정하고 Array 초기화 및 요소 접근

 

val a = new Array[String](2)

 

String type이 2개 들어갈 수 있는 배열 객체를 만드는 코드이다.

지금 배열 객체는 빈 방이 2개 있는 것이랑 같아서 내가 채워주어야 한다.

a(0) = "first"

a(1) = "second"

이렇게 넣으면 배열의 각 인덱스에 값이 할당되게 된다.

 

 

(2) 요소 접근

아래와 같은 방법으로도 배열을 생성할 수 있다.

//val a = Array("first","second")

 

 

 

2.  값 가져오기

a(0)

a(1)

앞서 다뤘던 List 나 Vector 처럼 인덱스는 ( ) 로 지정하고 0부터 시작된다.

 

 

 

3.  값 지정 및 수정하기

a(0) = "hello"

a(1) = "hi"

이런 코드를 적고 위에서 정의했던 어레이를 다시 부르면

a = Array("hello","hi") 상태로 value가 업데이트 되어있는 것을 확인할 수 있다. 

하지만 처음 val a = Array() 가 선언될 때, a의 배열 크기는 정해졌으므로 그 크기를 초과하는 a(2) = "good" 등을 지정해줬을 때는 에러가 뜬다. 

 

 

 

 

 

이렇듯 array는 배열 요소 수정이 가능하지만, 크기는 한 번 정해지면 변하지 않는다는 단점이 있다. 이러한 배열의 장점과 단점을 모두 보완한 것이 있는데, 바로  "ArrayBuffer" (가변 길이)이다. ArrayBuffer는 사이즈 조정이 자동적이다라는 점에서 유용하게 쓰인다. 

https://wooono.tistory.com/179

(참고링크)

 

import scala.collection.mutable.ArrayBuffer

val c = ArrayBuffer[Int]()
c += 1
//ArrayBuffer(1)

c+=(2,3,4,5)
//ArrayBuffer(1,2,3,4,5)

c.insert(2,99)
//ArrayBuffer(1,2,99,3,4,5)
c.remove(2)
//2번째 index 삭제
//ArrayBuffer(1,2,3,4,5)

c.remove(0,2)
//0번째부터 1번째까지 삭제

 

 

 

 

 

 

 

 

 

 

 

'프로그래밍 > Scala' 카테고리의 다른 글

Scala Array 문법  (0) 2022.11.24
백준 2738번 행렬의 덧셈  (0) 2022.11.23
Scala String 문법  (0) 2022.11.22
1103 Mixin, Stacking with Traits  (0) 2022.11.03
1101 Inheritance vs. Composition  (0) 2022.11.01