Part6 Collection) Array

b4failrise ㅣ 2019. 2. 23. 19:44

배열은 Array(element1, element2, ...)와 같이 만들 수 있습니다.

스칼라의 배열은 자바의 배열에 대응하는 개념입니다. 예를 들어 자바에서 int[]는 스칼라에서 Array[Int]와 같습니다.

스칼라의 배열은 mutable입니다. 사이즈를 변경할 수 있다는 의미가 아니라 들어있는 값을 변경할 수 있다는 의미의 mutable입니다.

배열은 그냥 출력하면 배열의 내용을 출력해 주지 않습니다. 내용을 출력하려면 .mkString(",")과 같은 메소드를 이용해야 합니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
object LearnScala {
    // 배열의 내용을 출력하는 메소드
    def printArray[K](array:Array[K]) = println(array.mkString("Array(" , ", " , ")")) 
    def main(args: Array[String]): Unit = {
        
        // ① Array[Int]  
        val array1 = Array(123)
        print("① ")
        printArray(array1)
        val sz = array1.size
        println(sz)
        for(i <- 0 until sz){
            println(array1(i))
        }
        
        
        
        // ② Array[Any]
        val array2 = Array("a"2true)
        print("② ")
        printArray(array2)
        
        // ③ 배열의 값을 읽고 쓰기
        val itemAtIndex0 = array1(0)        
        array1(0= 4
        print("③ ")
        printArray(array1)
        
        // ④ 배열을 붙일때는 ++연산자를 이용
        // 앞에 붙일때는 +:, 뒤에 붙일때는 :+ 연산자
        val concatenated = "앞에 붙이기" +: (array1 ++ array2) :+ "뒤에 붙이기"
        print("④ array1과 array2를 더하면: ")
        printArray(concatenated)
        
        // 값으로 index찾기
        println(array2.indexOf("a"))
        
        // ⑤ 다른 값만 가져오기
        val diffArray = Array(1,2,3,4).diff(Array(2,3))
        print("⑤ Array(1,2,3,4).diff(Array(2,3))의 결과: ")
        printArray(diffArray)
        
        
        val personArray = Array(("솔라",1), ("문별",2), ("휘인",3))        
        // ⑥ Find 메소드를 이용해서 findByName이라는 메소드 생성
        // Find는 조건에 맞는 값을 찾으면 검색을 중단
        // getOrElse는 일치하는 값이 없을 경우 넘겨줄 기본 값
        // getOrElse가 없을때 일치하는 값이 없으면 None
        def findByName(name:String= personArray.find(_._1 == name).getOrElse(("화사",4))
        val findSolar = findByName("솔라")  // 값("솔라",1)을 찾아서 넘겨줌
        val findSun = findByName("태양")  // 값이 없으므로 getOrElse에 있는 값("화사",4)이 들어감
        println(findSolar)
        println(findSun)
        
        
        
    }
}
cs


출력 ① Array(1, 2, 3)
3
1
2
3
② Array(a, 2, true)
③ Array(4, 2, 3)
④ array1과 array2를 더하면: Array(앞에 붙이기, 4, 2, 3, a, 2, true, 뒤에 붙이기)
0
⑤ Array(1,2,3,4).diff(Array(2,3))의 결과: Array(1, 4)
(솔라,1)
(화사,4)


'Scala' 카테고리의 다른 글

[스크랩]함수형 프로그래밍이란 무엇인가?  (0) 2019.02.26
Part6. Collection) List  (0) 2019.02.25
Part5 제어문) if문  (0) 2019.02.23
Part5 제어문) 중첩 반복문  (0) 2019.02.23
Part5 제어문) 반복문  (0) 2019.02.23