Japanese subtitles

← 18-47 Update Solution

18-47 Update Solution

Get Embed Code
2 Languages

Showing Revision 2 created 07/22/2014 by osawakjvta.

  1. アップデートはlookupとよく似ています
  2. そのコードをコピーしどのように変更するか
  3. 確認することから始めましょう
  4. lookupがあります これをupdateに変更します
  5. 入力としてキーのみではなくキーと値を使用します
  6. ですが何も返しませんのでreturnを削除します
  7. updateで行うのはエントリの値の
    修正だということを忘れないでください
  8. lookupのためのコードがまだあります
  9. バケットをまだ取得しますがこれは必要な処理です
  10. 適切なバケットで値を更新しますが
  11. 一致するか調べるためにバケットのエントリを
  12. 1つずつ見る必要がまだあります
  13. 一致するものを見つけた時
    lookupで行ったのはそれを返すことです
  14. updateの場合はそのキーに関連する値を更新します
  15. ですから新たな値にする前に
  16. どんな値でも置き換えられる代入をします
  17. そして値を返す代わりに
    ループを停止させる必要があります
  18. これでupdateは終了でここに戻ります
  19. エントリを見つけ値を更新しました
  20. エントリが見つからない場合の対処も必要です
  21. ですから十分な時間のループを行っています
  22. lookupの時はNoneを返すだけでした
  23. updateで行うことはキーがテーブルにない場合
    それを追加することです
  24. ここでappendを使用し
  25. 新たなエントリをバケットに追加します
  26. これにはキーと値があります
    これがupdateを定義する方法です
  27. もちろん他にもたくさんの方法があります
  28. 1つ考えるべきことは
    実際にこれはlookupとよく似ているということです
  29. たくさんのコードが重複しました
  30. updateとlookupを定義する方法が
    あるかもしれません
  31. そうすれば適切なエントリを見つけるために
  32. バケットをスキャンするコードのコピーを
    2つ持つ必要がありません
  33. これをこのレッスンのホームワーク問題にします
  34. 今のところはlookupとupdate両方の実装が
  35. 正しくできたことを喜んでください
    さあテストしてみましょう
  36. 以前行ったことですがaddをupdateに置き換えます
  37. 今回は2度目です
    addで行ったのはエントリを追加したことです
  38. しかしそのエントリに達することはありませんでした
  39. なぜなら同じキーワードがあったからです
  40. ですからupdateを使用し
    2度目はその値を更新する必要があります
  41. lookupが2度目のlookupで
  42. 値27を返しているのが確認できます いいですね
  43. 1度目の値は23でした
  44. updateを行い27を取得しました
  45. バケットが1つのエントリだけを含んでいるのが
    確認できます
  46. ハッシュテーブルの実装を完了しました
    キーワードが存在していなくても
  47. ハッシュテーブルに新たな値を追加する
  48. または既存のキーワードの値を
    変更するupdateが行えます
  49. そして私たちはlookupができ
    キーが存在していればそれを見つけるために
  50. lookupはどのバケットを調べるか把握するでしょう
  51. キー数が増えるという
    すばらしいプロパティを持っています
  52. それに応じてバケット数が増える限り
  53. updateとlookupを行う時間は変わりません
  54. つまりたとえキーワード数が増えても
    バケット数も増える限り
  55. 時間は増えないということです
  56. ですから各バケットのサイズは同じままです
    なぜならメモリ数を多く使うのは
  57. 一致するキーを探すバケット内の各要素を
    探すことだからです