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