getとは?
Javaのgetメソッドとは、データの集まりやオブジェクトの中から必要なデータを取り出すための操作です。
たくさんの引き出しが並んだ棚から、特定の場所にある書類を探して手元に持ってくる動作をイメージすると分かりやすいかもしれません。
Javaのプログラムでは、主にデータ構造のリストから指定した位置の値を取り出すときや、クラスの内部にあるデータを安全に外側へ渡す窓口として利用されます。
getの特徴
- リストなどの入れ物から決まった位置にある値を取り出すことができる
- クラスの内部にあるデータを安全に外側へ渡す役割を持つ
- 内部のデータを渡すメソッドはゲッターメソッドと呼ばれgetから始まる名前をつける
- 外側から直接データを触られるのを防ぎオブジェクト指向の設計に役立つ ・どちらの使いかたでもデータを取り出すという目的は共通している
プログラムを組むうえで基本でありながら非常に大切な操作なので、役割をしっかり覚えておきましょう。
基本構文
getメソッドはさまざまな場面で登場しますが、ここでは代表的な使いかたを紹介します。それぞれのコード例を確認することで、getの書きかたと動作の流れをつかんでください。
ArrayListのget
ArrayListは、よく使われるリスト型のコレクションです。要素はインデックスと呼ばれる0から始まる番号で管理されており、getメソッドにインデックスを渡すことで、その番号に対応する要素を取り出せます。
出力結果
ネコこの例では、リストから指定した位置のデータを取り出しているために、ネコの結果となります。まず、動物の名前を順番に3つ登録した配列リストを用意します。インデックスは0から始まるため、get(1)を指定すると2番目に登録された要素が選択され、変数に格納したあと画面に表示しています。
HashMapのget
HashMapは、キーと値をペアにして管理するコレクションです。getメソッドの引数にキーを指定することで、対応する値を取り出せます。動物の種類をキーにして、年齢を値として管理するコードを見てみましょう。
出力結果
10この例では、マップに登録したキーに対応する年齢を取得しているために、10の結果となります。
まず、文字列のキーと数値の値を結びつけるハッシュマップを作成し、putメソッド(追加メソッド)で2組のデータを登録します。そのあと、getメソッドにカメというキーを渡すことで、対応する値を取り出して画面に表示しています。
クラスのゲッターメソッド
クラスの内部にあるフィールドを外側から安全に読み取るために、ゲッターメソッドを定義します。フィールドの制限をprivateにして外側から直接書き換えられるのを防ぎ、getで始まるメソッドを通じて値を渡す設計が一般的です。
出力結果
パンダこの例では、オブジェクトに設定された名前を専用のメソッド経由で取得しているために、パンダの結果となります。
まず、名前を保持するクラスを定義し、インスタンス化するときにパンダという文字列を渡して初期化します。フィールドは非公開ですが、getNameメソッドを呼び出すことで安全にデータを取得して表示しています。
実用例
ここでは実際の開発でよく見かけるgetの使い方をサンプルコードとあわせて紹介します。各コードは実際に動作させることを想定しています。さまざまなコレクションやクラスを対象に、getの使い方のバリエーションを確認してください。
ArrayListから要素を取り出す
ArrayListに格納された動物の名前を、インデックスを指定して取り出すコードです。リスト内の特定の位置にある要素を参照したいときに使います。
出力結果
キリンこの例では、4つの要素を持つリストから特定のデータを取り出しているために、キリンの結果となります。
まず、動物の名前を順番に登録した配列リストを用意します。get(2)を実行すると、0から数えて3番目の要素であるデータが取得され、画面に表示されます。存在しないインデックスを指定するとエラーになるため、sizeメソッドでデータの個数を確認しながら使うと安全です。
HashMapから値を取得する
動物の種類をキーに、生息地を値として持つHashMapから、特定の動物の生息地を取り出すコードです。
出力結果
オーストラリアこの例では、動物の名前をキーにして生息地を検索しているために、オーストラリアの結果となります。
まず、動物と場所のペアを保持するハッシュマップを作成し、3件のデータを登録します。getメソッドの引数にコアラを指定することで、対応する文字列を取得して変数に代入し、画面に出力しています。
もし存在しないキーを指定した場合はnullが返されます。
クラスのゲッターメソッドを使う
Animalクラスに複数のフィールドを持たせ、それぞれにゲッターメソッドを定義してアクセスするコードです。
出力結果
クマ:5歳この例では、複数のデータを持つオブジェクトからそれぞれの値を取得しているために、クマ:5歳の結果となります。
まず、名前と年齢のフィールドを持つクラスを作成し、初期値を与えてインスタンス化します。非公開になっている各フィールドの値は、getNameメソッドとgetAgeメソッドを経由して取得し、文字列を連結して画面に表示しています。
Optionalのgetで値を取り出す
Optionalはnullを安全に扱うためのクラスです。値が存在するかどうかを確認した上で、getメソッドを呼び出す使いかたを示します。
出力結果
カワウソこの例では、値が格納されていることを確認してから中身を取り出しているために、カワウソの結果となります。まず、文字列を包み込んだオプショナルのオブジェクトを作成します。isPresentメソッドで内部にデータがあるかを判定し、データが存在する場合のみgetメソッドで値を取り出して画面に表示しています。
LinkedListのgetで要素にアクセスする
LinkedListもget(インデックス)で要素にアクセスできます。データの追加や削除が頻繁な場面で使われることが多いコレクションです。
出力結果
タコ
クジラこの例では、連結リストに並んだデータから特定のインデックスを指定しているために、タコとクジラの結果となります。
まず、3つの要素を連結リストに追加します。get(0)で先頭のデータを取得して表示し、次にget(2)で3番目のデータを取得して表示しています。データの追加や削除は速いですが、特定の要素をgetメソッドで探す処理は配列リストより遅くなる性質があります。
まとめ
Javaにおけるgetメソッドは、データの集まりやオブジェクトの中から必要なデータを取り出す重要な操作です。この記事では、基本的な使いかたから実際の活用例まで解説しました。
getメソッドが活用できるような場面は次のようなケースです。
getメソッドが活躍する場面
- 配列リストや連結リストから決まった位置にあるデータを取り出したいとき
- ハッシュマップに登録したキーに対応する値を取得したいとき
- クラスの内部にあるデータを安全に外側へ渡す窓口を作りたいとき
getメソッドを用いる上で、押さえておきたいポイントを覚えておきましょう。
重要なポイント
- 配列リストなどのインデックスは0から始まるため指定する番号に注意する
- 存在しないインデックスを指定するとエラーが発生するためサイズを確認する
- ハッシュマップで存在しないキーを指定した場合は空の状態であるnullが返る
- クラスのフィールドを非公開にして外部の直接アクセスを防ぐ設計に役立つ
- オプショナルでは事前にデータの存在を確認してから中身を取り出す
プログラムを組むうえで基本でありながら非常に大切な操作なので、役割をしっかり覚えておきましょう。
コレクションの種類ごとの動きの違いやゲッターメソッドの設計的な意味を理解することで、より読みやすく安全なコードを書けるようになります。まずは小さなコードを自分で書いて動かしてみることが、理解を深める近道です。
ぜひgetメソッドの使いかたをマスターして、より実用的なプログラムを作成できるようになりましょう。