스칼라에서 리스트는 변경 불가능한 특징이 있어서 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 |