[Javaの小枝] LinkedHashMapを使ったLRUキャッシュ
内容はないよう
タイトルにあるように LinkedHashMap を用いて LRU キャッシュを簡単に作成できる、というのを何かで以前読んで記憶していた。LinkedHashMapはキーの順序を保持するタイプのマップで、キーの順序には「挿入順モード」と「アクセス順モード」の二つが存在する。LRUキャッシュの部品として使う場合、後者のアクセス順モードにてキーを保持すれば良い、という訳だ。
で、今回仕事で LRU キャッシュを使う必要があり、確認のため JavaDoc を見ると著しく不安をかきたてる日本語が書かれていた…
「アクセス順のリンク・ハッシュ・マップでは get でマップを照会することだけが構造的変更です。」
なんだとっ!! もしかして put しても構造的変更(=キー順序の入れ替え)にならない?
思わず検証してしまった。(-_-;; 当然そんなことはなかった。(-_-;;
対応する英語版は以下の通り。「単なるgetクエリだけでも構造的変更となります」と書かれている。つまりは get と put の両方で構造的変更が発生する。
日本語版にいろいろ誤訳があるのは諦観の念を持ってはいるが、このレベルの誤訳はさすがに不安になるのでかんべんしてほしい。まとめると、LRUキャッシュを作成する際、安心して以下のように書いてかまわない。
Map<String, Long> lruCache = new LinkedHashMap<String, Long>(16, 0.75f, true)
Author And Source
この問題について([Javaの小枝] LinkedHashMapを使ったLRUキャッシュ), 我々は、より多くの情報をここで見つけました https://qiita.com/KIchiro/items/66188b5f50d4fb8e4f1e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .