Scala 진급 의 길 - 고급 데이터 형식의 배열 사용
저자: 윤 정 걸
판권 성명: 오리지널 작품, 전재 사절!그렇지 않 으 면 법 적 책임 을 추궁 할 것 이다.
1. 배열 의 초기 화 방식
1 >. 길이 가 변 하지 않 는 배열 배열
주의: 말 그대로 길이 가 변 하지 않 는 배열 은 배열 의 길이 가 변 하지 않 지만 배열 의 내용 은 바 꿀 수 있 습 니 다!
1 /*
2 @author :yinzhengjie
3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Scala%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/
4 EMAIL:[email protected]
5 */
6 package cn.org.yinzhengjie.function
7
8 object MyArray {
9
10 def main(args: Array[String]): Unit = {
11 /**
12 * , , ( var )。
13 * [String] : , String
14 * (3) : 3 arr
15 */
16 var arr :Array[String] = new Array[String](3)
17 /**
18 * , arr , , Scala
19 */
20 var arr2 = new Array[String](3)
21
22 /**
23 * , , ( val )
24 */
25 val arr3 = Array (1,2,3) // , new !
26
27 /**
28 * 3 ,
29 */
30 arr(0) = "yinzhengjie"
31 arr2(1) = " "
32 arr3(2) = 100
33
34 // toBuffer , toString 。
35 println(arr.toBuffer.toString())
36 println(arr2.toBuffer.toString())
37 println(arr3.toBuffer.toString())
38 }
39 }
40
41
42
43 /*
44 :
45 ArrayBuffer(yinzhengjie, null, null)
46 ArrayBuffer(null, , null)
47 ArrayBuffer(1, 2, 100)
48 */
2 >. 길이 가 변 배열 (Array Buffer)
말 그대로 길이 가 변 배열 은 배열 의 길 이 를 변화 시 킬 수 있 고 그 내용 도 변화 시 킬 수 있 습 니 다!
1 /*
2 @author :yinzhengjie
3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Scala%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/
4 EMAIL:[email protected]
5 */
6 package cn.org.yinzhengjie.function
7
8 /**
9 * (mutable ) (immutable ) ,immutable ,
10 * , ArrayBuffer, !
11 */
12 import scala.collection.mutable.ArrayBuffer
13
14
15 object ArrayBuffDemo {
16
17 def main(args: Array[String]): Unit = {
18 //
19 val arr = ArrayBuffer[String]("yinzhengjie"," ","Scala")
20 //
21 arr.foreach(i => print(i + "\t"))
22 println("
========== ===========")
23 //
24 arr+=("Shell","Python","Java","Golang")
25 //
26 arr.foreach(i => print(i + "\t"))
27 }
28 }
29
30 /*
31 :
32 yinzhengjie Scala
33 ========== ===========
34 yinzhengjie Scala Shell Python Java Golang
35 */
2. 배열 의 상용 방법
1 >. 맵 방법 (map)
1 /*
2 @author :yinzhengjie
3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Scala%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/
4 EMAIL:[email protected]
5 */
6 package cn.org.yinzhengjie.function
7
8 object MyArray {
9
10 def main(args: Array[String]): Unit = {
11 /**
12 * , , new, apply , ".apply" 。
13 */
14 val arr = Array.apply[String]("yinzhengjie"," ","Scala","Python","Golang")
15
16 /**
17 * f1, String ; arr map 。
18 */
19 var f1 = (x:String) => x + "_2018"
20 val arr2 = arr.map(f1)
21
22 /**
23 * , , :
24 */
25 val arr3 = arr.map((x:String) => x + "_2018") // f1 ,
26 val arr4 = arr.map(x => x + "_2018") // x Scala
27 var arr5 = arr.map(_ + "_2018") // ("_") arr
28
29 println(arr.toBuffer.toString())
30 println(arr2.toBuffer.toString())
31 println(arr3.toBuffer.toString())
32 println(arr4.toBuffer.toString())
33 println(arr5.toBuffer.toString())
34 }
35 }
36
37
38
39 /*
40 :
41 ArrayBuffer(yinzhengjie, , Scala, Python, Golang)
42 ArrayBuffer(yinzhengjie_2018, _2018, Scala_2018, Python_2018, Golang_2018)
43 ArrayBuffer(yinzhengjie_2018, _2018, Scala_2018, Python_2018, Golang_2018)
44 ArrayBuffer(yinzhengjie_2018, _2018, Scala_2018, Python_2018, Golang_2018)
45 ArrayBuffer(yinzhengjie_2018, _2018, Scala_2018, Python_2018, Golang_2018)
46 */
2 >. 평면 화 작업 (flatten 과 flatMap)
1 /*
2 @author :yinzhengjie
3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Scala%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/
4 EMAIL:[email protected]
5 */
6 package cn.org.yinzhengjie.function
7
8 object MyArray {
9
10 def main(args: Array[String]): Unit = {
11 /**
12 * ,
13 */
14 val arr = Array.apply[String]("yinzhengjie, ","Python,Shell,Golang,Java,Scala")
15 /**
16 * map (",") , arr 2 ,
17 * “,” 。
18 */
19 val arr2 = arr.map(_.split(","))
20
21 /**
22 * , flatten arr2 , arr2 。
23 */
24 val arr3 = arr2.flatten
25
26
27 /**
28 * arr arr3 , ,“arr3 = arr.map(_.split(",")).flatten”, flatMap !
29 */
30 val arr4 = arr.flatMap(_.split(","))
31
32 /**
33 * arr,arr2 arr3 。
34 */
35 println(arr.toBuffer.toString(),arr.length)
36 println(arr2(0).toBuffer.toString(),arr2(1).toBuffer.toString(),arr2.length)
37 println(arr3.toBuffer.toString(),arr3.length)
38 println(arr4.toBuffer.toString(),arr4.length)
39 }
40 }
41
42
43 /*
44 :
45 (ArrayBuffer(yinzhengjie, , Python,Shell,Golang,Java,Scala),2)
46 (ArrayBuffer(yinzhengjie, ),ArrayBuffer(Python, Shell, Golang, Java, Scala),2)
47 (ArrayBuffer(yinzhengjie, , Python, Shell, Golang, Java, Scala),7)
48 (ArrayBuffer(yinzhengjie, , Python, Shell, Golang, Java, Scala),7)
49 */
3 >. 옮 겨 다 니 는 방법 (foreach)
1 /*
2 @author :yinzhengjie
3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Scala%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/
4 EMAIL:[email protected]
5 */
6 package cn.org.yinzhengjie.function
7
8 object MyArray {
9
10 def main(args: Array[String]): Unit = {
11 /**
12 * ,
13 */
14 val arr = Array.apply[String]("yinzhengjie, ","Python,Shell,Golang,Java,Scala")
15
16 /**
17 * flatMap arr
18 */
19 val arr2 = arr.flatMap(_.split(","))
20
21 /**
22 * foreach arr2 ,foreach 。
23 */
24 arr2.foreach(x => print(x + "\t"))
25 arr2.foreach(println)
26
27
28 }
29 }
30
31
32
33
34 /*
35 :
36 yinzhengjie Python Shell Golang Java Scala yinzhengjie
37
38 Python
39 Shell
40 Golang
41 Java
42 Scala
43 */
4 >. 단어 통계 사례 (wold count)
1 /*
2 @author :yinzhengjie
3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Scala%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/
4 EMAIL:[email protected]
5 */
6 package cn.org.yinzhengjie.function
7
8 object MyArray {
9
10 def main(args: Array[String]): Unit = {
11 /**
12 * ,
13 */
14 val arr = Array.apply[String]("yinzhengjie, ,yinzhengjie","Python,Shell,Golang,Java,Scala,yinzhengjie")
15
16
17 /**
18 * flatMap:
19 * , flatMap(_.split(",")) 2
20 * groupBy:
21 * , ,
22 * mapValues:
23 * ,
24 */
25 val arr2 = arr.flatMap(_.split(",")).groupBy(x => x).mapValues(x => x.length)
26 arr2.foreach(x => print(x + "\t"))
27 println("
======= =======")
28 /**
29 * :
30 * map , ,
31 * toList:
32 * arr3 map list
33 * sortBy:
34 * , ,x._1, x arr3 list , “_1” , , 1 2
35 */
36 val arr3 = arr2.toList.sortBy(x=>x._1)
37 arr3.foreach(x => print(x + "\t"))
38 }
39 }
40
41
42
43
44 /*
45 :
46 (Shell,1) (Scala,1) (yinzhengjie,3) (Python,1) ( ,1) (Golang,1) (Java,1)
47 ======= =======
48 (Golang,1) (Java,1) (Python,1) (Scala,1) (Shell,1) (yinzhengjie,3) ( ,1)
49 */
숫자 에 따라 거꾸로 배열 하려 면 다음 코드 도 World count 단어 통 계 를 볼 수 있 습 니 다.
1 /*
2 @author :yinzhengjie
3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Scala%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/
4 EMAIL:[email protected]
5 */
6 package cn.org.yinzhengjie.function
7
8 object WordCount {
9 def main(args: Array[String]): Unit = {
10 val words: Array[String] = Array("hello yinzhengjie hello yinzhengjie Python", "hello Python hello yinzhengjie Scala Golang")
11 // words (" ") 。
12 val wordSplit: Array[Array[String]] = words.map((x: String) => x.split(" "))
13 // Array
14 val fltWords: Array[String] = wordSplit.flatten
15 // : hello -> Array(hello, hello, hello, hello)
16 val mapWords: Map[String, Array[String]] = fltWords.groupBy((wd: String) => wd)
17 // map , : (hello, 4), (yinzhengjie,1).....
18 val wrdResult: Map[String, Int] = mapWords.map(wdKV => (wdKV._1, wdKV._2.length))
19 // Map , map List, sortBy ( , )
20 val sortResult: List[(String, Int)] = wrdResult.toList.sortBy(t => - t._2)
21 //
22 sortResult.foreach(i => println(i))
23 }
24 }
25
26
27
28 /*
29 :
30 (hello,4)
31 (yinzhengjie,3)
32 (Python,2)
33 (Scala,1)
34 (Golang,1)
35 */
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.