1. ホーム
  2. java

[解決済み] Key-Value Pairとは何ですか?[クローズド]

2022-03-06 21:28:15

質問

私はアンドロイド・アプリケーションをプログラムできるようにJavaを独学で勉強しており、キー・バリュー・ペアを使用する必要性に遭遇しましたが、それが何であるかわかりません。

私が戸惑っているのは、これが通常の変数とどう違うのかということです。例えば、String型変数がオブジェクトを指し、int型変数がint値を指すとします。この変数はquot;key"で、オブジェクトはquot;valueではないのでしょうか?

どのように解決するのですか?

最も単純なレベルでは、キーと値のペアは2つの値だけで、一方を「キー」、もう一方を「値」として指定します。

しかし、キーと値のペアについては、マッピング、すなわちキーから対応する値(または値)にマッピングする(数学的)関数の文脈で語る方がより一般的です。 このマッピングの特性によって、キーと値のペアのセットを制限することができます。 たとえば、1対1のマッピングの場合、セットのキーは一意である必要があります。


続いての質問です。

これは配列と同じですか?

そうですね......配列は、インデックス(整数)の集合から値へのマッピングと考えることができます。 しかし、マッピングはより一般的なものです。 そしてJavaでは、配列には他の特性があって Map そして、よりシンプルで高速、かつメモリ消費量の少ない実装になっています。

(言語によっては、quot;array"というデータ型が存在しないものもあります。 その代わり、プリミティブはquot;ハッシュやquot;連想配列(alistative array)...つまり、より一般的なマップである)。

<ブロッククオート

また、キーは常に文字列なのでしょうか?

いいえ、キーはどのような型でもかまいません。 (一般的には 悪知恵 を使用して実装されている場合は特にそうです。 Map という型があります。 ただし、状況によってはそれさえもうまくいくことがあります)。

String 型の変数がオブジェクトを、int 型の変数が int 型の値を指すとします。その変数はquot;key"で、オブジェクトはquot;value"ではないでしょうか?

少なくとも、Javaのような静的言語ではそうではありません。 キーと値のペアを変数バインディングと区別するのは、"key" オブジェクトがデータであり、それゆえ異なる値を取ることができるという点です。 それに対して、変数の名前はプログラムのソースコードにハードウエアされており、実行時に変更することはできません。

(いくつかの動的言語では、新しい変数を動的に (実行時に) 作成することができます。そのような言語では、変数は、プログラムの実行のある時点で、スコープを表すマッピングのキーと値のペアだと主張できます。 しかし、Javaはそうではないのです.)