4、Scalaマッピングとタプル

1.マッピングを作成します

不変/可変マップを作成する

val scores = Map("a"->10,"b"->11,"c"->12)

val scores = scala.collection.mutable.Map("a"->10,"b"->11,"c"->12)

空のマップから作成する

val scores = scala.collection.mutable.Map[String,Int]()

マッピングは双対性のセットです。双対性は2つの値で構成されるグループです。2つの値は必ずしも同じタイプである必要はありません。マッピングによって定義された別の方法"a"->10の値("a",10)
使用して双対性を作成できます

val scores = Map(("a,10),("dsad",10))

2.マップの値を取得します

値を取得して直接使用できます()

val bobsSocre = scores("a")
//如果映射中不存在该键,则该方法会抛出异常

マップに指定されたキーが含まれているかどうかを確認してから、containメソッドを使用します

val bobSocre = if(scores.contains("a") scores("a) else 0

またはscores.getOrElse("a",0)、上記の代わりに直接使用し
ください。存在しないキーにデフォルト値を設定することもできます。

scores.withDefaultValue(0)//当搜索的键不存在时,就会交出0

3.マップの値を更新します

①変数マッピングの更新方法は、

scores("a") = 11
scores+=("cc",101)
scores-="a"

②更新不可能なマッピングの場合、その操作のために新しいマッピングを生成できます

val newScores = scores + ("Bob"->10,"Ffff"->7)
scores += ("Bob"->10,"Ffff"->7)

scores = scores - "Bob"
scores -= "Bob"

4.反復マッピング

トラバーサルマップ

for ((k,v) <- 映射) 处理 k 和 v 

キーまたは値のみにアクセスする

scores.keySet

for (v<-scores.values)	println(v)

5.ソートされたマッピング

マッピングを実装するには、ハッシュテーブルとバランスツリーの2つの方法があります。
デフォルトでは、マッピングはより効率的であるためハッシュテーブルに基づいて実装されますが、要素の順序は保証されません。キーにアクセスする場合マップ内で一度に1回使用できます。SortedMap挿入された順序でキーにアクセスする場合は、次を使用します。LinkedHashMap

val scores = scal.collection.mutable.SortedMap(……)
val months = scala.collection.mutable.LinkedHashMap(……)

6.Javaとの相互運用性

①Javaメソッド呼び出しを介してJavaマッピングを取得する場合、それをScalaマッピングに変換する必要がある場合は、次のステートメントを追加する必要があります。import scala.collection.JavaConversions.mapAsScalaMap次に、Scalaマッピングタイプを指定して変換をトリガーします。

val scores: scala.collection.mutable.Map[String,Int] = new java.util.TreeMap[String,Int]

java.util.Propertiesから切り替えることもできますMap[String,String]

import scala.collection.JavaConversions.propertiesAsMap
val props:scala.collection.Map[String,String] = System.getProperties()

③Scalaのマッピングを期待されるJavaマッピングに渡す方法もありますが、ここでは展開されていません

7.タプル

マップは、キーと値のペアのコレクションです。二元性はタプルの最も単純な形式です。タプルはさまざまなタイプの値の集合体です。
タプルの例:タプルコンポーネントにアクセスval t =(1,3.14,”Fred“)するために使用_1,_2,_3できますt._2が、次のように記述できます。t _2

パターンマッチングを使用して、タプルのコンポーネントパーツを取得できますval (first,second,third) = t現時点では、タプル内のすべてのパーツ欠落している必要がない場合は、使用する必要のないパーツに置き換えることができます。;タプルは、関数が複数の価値のある状況を返すために使用できます結果は次のとおりです。first=1,second=3.14,third="Fred"
_val (first,second,_)=t
"New York".partition(_.isUpper)("NY","ew ork")

8.ジッパー操作

Zipは、複数の値をまとめて処理できるようにするためのものです。

val symbols = Array("<-","-","->")
val count = Array(2,10,2)
val pairs = symbols.zip(count)

結果は次のとおりですArray(("<-",2),("-",10),("->",2))
。さらに、次のtopMap方法を使用して、双対性をマッピングに変換できます。keys.zip(values).toMap

おすすめ

転載: blog.csdn.net/Cxf2018/article/details/109412372