文字列の不変性により、ハッシュコード値をキャッシュできます

Andy897

文字列が不変である多くの理由の中で、理由の1つは次のように引用されています。

文字列の不変性により、ハッシュコード値をキャッシュできます。

私はこれを本当に理解していませんでした。ハッシュコード値をキャッシュするとはどういう意味ですか?これらの値はどこにキャッシュされますか?文字列が変更可能であったとしても、このキャッシュされたハッシュコード値は必要に応じていつでも更新できます。それで、大したことは何ですか?

ベルンハルトバーカー

ハッシュコード値をキャッシュするとはどういう意味ですか?これらの値はどこにキャッシュされますか?

ハッシュコードが計算されると、の変数に格納されますString
のソースを見ると、Stringこれがより明確になります。

public final class String implements ... {
    ...
    /** Cache the hash code for the string */
    private int hash; // Default to 0

    ...

    public int hashCode() {
        int h = hash;
        if (h == 0 && ...) {
            ...
            hash = h;
        }
        return h;
    }

    ...
}

文字列が変更可能であったとしても、このキャッシュされたハッシュコード値は必要に応じていつでも更新できます

本当。ただし、すべての変更関数で再計算/リセットする必要があります。これは可能ですが、良いデザインではありません。

全体として、次のような理由があればおそらくもっと良かったでしょう。

文字列の不変性により、ハッシュコード値のキャッシュが容易になります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Java文字列のハッシュコードをキャッシュ機構

分類Dev

キー/値ハッシュでマップを使用すると、文字列のように扱われます

分類Dev

キー/値ハッシュでマップを使用すると、文字列のように扱われます

分類Dev

文字列を整数に変換できない-ハッシュ内のハッシュから値を抽出する

分類Dev

キーと値のペアである文字列をRubyのハッシュに変換します

分類Dev

java、いつ(そしてどのくらいの期間)スレッドは不揮発性変数の値をキャッシュできますか?

分類Dev

java、いつ(そしてどのくらいの期間)スレッドは不揮発性変数の値をキャッシュできますか?

分類Dev

キーの値がハッシュまたは複数項目の配列である可能性があるデータ構造をループするときにコードを繰り返さないようにするにはどうすればよいですか?

分類Dev

短い文字列のハッシュコードを同じにすることはできますか?

分類Dev

Perlでは、JSONエンコーディングで数値と文字列のハッシュ値をどのように区別できますか?

分類Dev

この「ハッシュのような」文字列をキーと値のペアに変換する方法

分類Dev

Perl:キーと値の配列をハッシュに変換します

分類Dev

Ruby / Rails:キーと値の文字列(配列値を含む)を有効なハッシュに変換するにはどうすればよいですか?

分類Dev

空でない文字列のハッシュコードはゼロにすることができますか?

分類Dev

配列内のハッシュキーをah`ashの値に置き換える必要があります

分類Dev

タイプjava.util.HashMapの値を文字列に変換できませんでしたが、コードにハッシュマップがありませんか?

分類Dev

50mbの文字列型のキーと値のペアのデータをJavaハッシュマップに保存できますか?

分類Dev

ハードドライブにすでに8メガバイトを超えるキャッシュがある場合、Windowsハードディスクの書き込みキャッシュはどのように使用されますか?

分類Dev

文字列変数のハッシュコードの一意性

分類Dev

ASTのハッシュコードをキャッシュするにはどうすればよいですか?

分類Dev

UIColorの16進文字列値をハッシュ値に変換できません

分類Dev

ハッシュのキーと値のペアの値を配列にプッシュします

分類Dev

(Angular 4、AOT、キャッシュの更新)サーバーでコードの変更が発生したときにエンドユーザーのブラウザーにハード更新を強制するにはどうすればよいですか?

分類Dev

Perl-ハッシュキーの代わりに文字列を使用する

分類Dev

便利な構文でハッシュマップ内の文字列キーを検索できますか?

分類Dev

値の配列に特定の文字列が含まれているハッシュキーを取得する

分類Dev

文字列をデコードするときにハッシュ値が一致しない

分類Dev

文字列をハッシュテーブルのキー/値と比較しようとしています

分類Dev

「Get」メソッドのキャッシュ値を Ninject できますか?

Related 関連記事

  1. 1

    Java文字列のハッシュコードをキャッシュ機構

  2. 2

    キー/値ハッシュでマップを使用すると、文字列のように扱われます

  3. 3

    キー/値ハッシュでマップを使用すると、文字列のように扱われます

  4. 4

    文字列を整数に変換できない-ハッシュ内のハッシュから値を抽出する

  5. 5

    キーと値のペアである文字列をRubyのハッシュに変換します

  6. 6

    java、いつ(そしてどのくらいの期間)スレッドは不揮発性変数の値をキャッシュできますか?

  7. 7

    java、いつ(そしてどのくらいの期間)スレッドは不揮発性変数の値をキャッシュできますか?

  8. 8

    キーの値がハッシュまたは複数項目の配列である可能性があるデータ構造をループするときにコードを繰り返さないようにするにはどうすればよいですか?

  9. 9

    短い文字列のハッシュコードを同じにすることはできますか?

  10. 10

    Perlでは、JSONエンコーディングで数値と文字列のハッシュ値をどのように区別できますか?

  11. 11

    この「ハッシュのような」文字列をキーと値のペアに変換する方法

  12. 12

    Perl:キーと値の配列をハッシュに変換します

  13. 13

    Ruby / Rails:キーと値の文字列(配列値を含む)を有効なハッシュに変換するにはどうすればよいですか?

  14. 14

    空でない文字列のハッシュコードはゼロにすることができますか?

  15. 15

    配列内のハッシュキーをah`ashの値に置き換える必要があります

  16. 16

    タイプjava.util.HashMapの値を文字列に変換できませんでしたが、コードにハッシュマップがありませんか?

  17. 17

    50mbの文字列型のキーと値のペアのデータをJavaハッシュマップに保存できますか?

  18. 18

    ハードドライブにすでに8メガバイトを超えるキャッシュがある場合、Windowsハードディスクの書き込みキャッシュはどのように使用されますか?

  19. 19

    文字列変数のハッシュコードの一意性

  20. 20

    ASTのハッシュコードをキャッシュするにはどうすればよいですか?

  21. 21

    UIColorの16進文字列値をハッシュ値に変換できません

  22. 22

    ハッシュのキーと値のペアの値を配列にプッシュします

  23. 23

    (Angular 4、AOT、キャッシュの更新)サーバーでコードの変更が発生したときにエンドユーザーのブラウザーにハード更新を強制するにはどうすればよいですか?

  24. 24

    Perl-ハッシュキーの代わりに文字列を使用する

  25. 25

    便利な構文でハッシュマップ内の文字列キーを検索できますか?

  26. 26

    値の配列に特定の文字列が含まれているハッシュキーを取得する

  27. 27

    文字列をデコードするときにハッシュ値が一致しない

  28. 28

    文字列をハッシュテーブルのキー/値と比較しようとしています

  29. 29

    「Get」メソッドのキャッシュ値を Ninject できますか?

ホットタグ

アーカイブ