Scala(七)-②-データ構造-集合-Queue-Cap-set

5539 ワード

Queue
① Why
なぜ学習キューですか?一つは、キューが生活中の多くのシーンを表示することに対応し、キューを知る、プログラムを書くことでキューシミュレーションを行うことができる.第二に、キューには、優先キューを利用して商品の販売量の上位10名を取得するなど、実際の応用シーンが多く、優先キューを販売量の優先順位に置く限り、販売量の高い者はキューの末尾に位置し、固定キューの大きさは10であり、リアルタイムで上位10名を維持することができる.
② How
    val q = mutable.Queue[Any]()
    print(q)

削除
増分-単一-キューに要素を追加
    // 2.    
    q += 1
    println(q)

追加削除-単一-出入りキュー
  // 3.    
    // 3.1  ,    
    val n = q.dequeue()
    println("dequeue q = " + q, "val = " + n)

    // 3.2  ,      
    q.enqueue(6)
    println("q = " + q)

増分-一括-複数の要素を追加
   // 2.1         
    q ++= List(4, 3, 2)
    println(q)

追加→集合→集合を要素として追加
  // 2.2         
    q += List(4,3,2)
    println(q)

調べる
   // 4.         ,        
    println("q head = " + q.head)
    println("q last = " + q.last)
    println("q = " + q)
    // tail               
    println(q.tail.tail.tail)

③ What
キューは である、下位層では または で実現することができる.配列を用いるとキューを環状キューにすることができる.チェーンテーブルでは、ヘッドノードにおけるヘッドテールポインタのメンテナンスにそれぞれ用いることができる.
④ Details
  • 入力および出力は に従う.すなわち、キューに格納データは、先に取り出す.後置の要後取
  • scalaでは、設計者が直接キュータイプQueueを提供して使用する.
  • scalaにはscala.collection.mutable.Queuescala.collection.immutable.Queueがあり、一般的に開発では
  • が一般的に使用されている.
    Map
    ① Why
  • Mapは何の重要なデータ構造ですか.私たちはMapでキャッシュすることができて、迅速なアクセスデータを実現することができます.

  • ② How
    Mapの四中方式を作成する
  • 可変のMapコード
  • を構築する
    val map1 = Map("Alice" -> 10, "Bob" -> 20, "City" -> "  ")
    println(map1)
    
  • 可変Map
  • を構築
    val map2 = scala.collection.mutable.Map("Alice" -> 10, "Bob" -> 20, "City" -> "  ")
    println(map2)
    
  • 空のmap
  • を構築
    val map3 = new  scala.collection.mutable.HashMap[String, Int]
    println(map3)
    
  • 偶数グループ方式作成
  • val map4 = scala.collection.mutable.Map(("Alice", 10), ("Bob", 20), ("City" , "  "))
    println(map4)
    

    検索-mapの要素
    メソッド1-かっこアクセス
  • 元素に放出異常がない場合.
  • Javaとは異なり、Javaのmapはnullを返す.
  • scala> map4("City")
    res11: Any =   
    
    scala> map4("City1")
    java.util.NoSuchElementException: key not found: City1
      at scala.collection.MapLike$class.default(MapLike.scala:228)
      at scala.collection.AbstractMap.default(Map.scala:59)
      at scala.collection.mutable.HashMap.apply(HashMap.scala:65)
      ... 32 elided
    

    方式二-containsを用いた判断
    scala> val key = "City1"
    key: String = City1
    
    scala> if (map4.contains(key)) {
         |     println("key  , =" + map4(key))
         | }else {
         |     println("key   ")
         | }
    key   
    

    方式3-getメソッドの使用
    val some = map4.get("City")
    if (some != None)
        println(some.get, "some's class = " + some.getClass())
    

    メソッド4-getOrElse(key,default) key
    val city = map4.getOrElse("City1", "beijing")
    println(city)
    

    選択方法のまとめ
  • Mapに対応するkeyがある場合は、 map(key)
  • である必要があります.
  • もし私たち Mapがkeyあるかどうか、そして異なるビジネスロジックがあるならば、mapを使用します.contains(key)
  • 単純に1つの値を得ることを望む場合はmapを用いる.getOrElse()

  • 変更→mapの要素の変更
  • mapは可変で修正できます.そうしないと、
  • とエラーが発生します.
  • keyがあれば更新、keyがなければ
  • を追加
    map4("City")="quanzhou"
    println(map4)
    

    インクリメンタル-mapに要素を追加
    方法1:+=を使用して追加
    scala> map4 += ("name"->"Mr.su")
    res23: map4.type = Map(Bob -> 20, name -> Mr.su, Alice -> 10)
    
    scala> map4 += ("City"->"Beijing")
    res24: map4.type = Map(Bob -> 20, City -> Beijing, name -> Mr.su, Alice -> 10)
    
    scala> println(map4)
    Map(Bob -> 20, City -> Beijing, name -> Mr.su, Alice -> 10)
    

    削除-mapの要素を削除
    -=演算子の使用
    scala> map4 -= ("name", "City")
    res21: map4.type = Map(Bob -> 20, Alice -> 10)
    
    scala> println(map4)
    Map(Bob -> 20, Alice -> 10)
    

    遍歴-mapの4の遍歴
    方式一-取(k,v)
    for ((k,v) 

    方式二-取key
    for (k 

    方式3-valueを取る
    for (v 

    方式四-ユニットを取る
    for (e 

    ③ What
  • HashMapはハッシュリスト(配列+チェーンテーブル)
  • である.
    ④ Details
  • で作成するMapは、デフォルトでは可変(Immutable)であるため、インポートする必要はない.
  • Mapは秩序である. は同じである.
  • Mapの k,v下層はTuple2
  • である.
    Set
    ① Why
    重複しない要素を格納する必要がある場合は、Set.を使用します.
    ② How
    作成
    可変setの作成
    val s = Set(1,2,3)
    println(s)
    

    可変setの作成
    val mset = scala.collection.mutable.Set(1,2,3, "Hello")
    println(mset)
    

    追加
    可変setセットの追加
    mset += 4
    println(mset)
    mset.add(5)
    println(mset)
    mset.+=(6)
    println(mset)
    

    削除
    可変setセットの削除、値による削除
    mset -= 2
    println(mset)
    mset.remove("Hello")
    println(mset)
    mset.remove("Nothing")
    println(mset)
    

    遍歴する
    for(item