Java 9のJShellでMap(マップ)を実装する方法をわかりやすく解説
JShellとは?
JShellは、Java 9で新たに導入されたJavaシェルツールです。コマンドライン上で入力を読み取り、その場で実行し、結果を即座に出力できる対話型(REPL)ツールとして提供されています。
従来のJavaプログラムのようにmain()メソッドを持つクラスを作成してコンパイル・実行する必要がなく、コードを1行ずつ手軽に試せるのが大きな特徴です。学習やプロトタイピング、APIの動作確認などに非常に便利です。
JShellで利用できるコレクション
JShellでは、Set、List、Mapなど、さまざまなコレクションを実装・操作できます。
中でも重要なのがMapインターフェースです。Mapは「キーと値(key-value)のペア」を管理するデータ構造で、以下のような特徴があります。
- 重複したキーは保持できない
- 各キーは最大1つの値に対応付けられる
空でないMapを実装する例
以下の例では、JShellを使って要素を持つMapを作成する手順を示します。HashMapを生成し、put()メソッドでキーと値のペアを追加していきます。
C:\Users\User>jshell
| Welcome to JShell -- Version 9.0.4
| For an introduction type: /help intro
jshell> Map<String, String> map = new HashMap<String, String>();
map ==> {}
jshell> map.put("raja", "ramesh");
$2 ==> null
jshell> map.put("adithya", "sai");
$3 ==> null
jshell> map.put("jai", "dev");
$4 ==> null
jshell> map.put("chaintaya", "krishna");
$5 ==> null
jshell> Map<String, String> immutableMap = Collections.unmodifiableMap(map);
immutableMap ==> {raja=ramesh, jai=dev, chaintaya=krishna, adithya=sai}
jshell>
実行結果のポイント
map.put()の戻り値がnullになっているのは、そのキーがまだ登録されていなかったためです。既存のキーに対してput()を実行すると、以前の値が戻り値として返されます。Collections.unmodifiableMap(map)を使うことで、既存のMapから変更不可(イミュータブル)なMapを作成できます。これにより、誤って内容を書き換えてしまうことを防げます。- 出力例では
{raja=ramesh, jai=dev, ...}のように、キー=値の形式でMapの中身が表示されています。
まとめ
JShellを活用すれば、main()メソッドやクラス定義なしに、Mapをはじめとする各種コレクションの動作を対話的に確認できます。JavaのコレクションAPIを学習する際や、短いコードを素早く検証したい場合に、ぜひ活用してみてください。
-
Javaで編集可能なJComboBoxを実装する方法【setEditable(true)の使い方を解説】
JComboBoxとは JComboBoxはSwingが提供するGUIコンポーネントの一つで、JComponentクラスを継承しています。テキストフィールドとドロップダウンリストを組み合わせた部品であり、ユーザーはリストから値を選択することができます。 コントロールのテキストフィールド部分が編集可能に設定されている場合、ユーザーはフィールドに直接値を入力したり、ドロップダウンリストから取得した値を編集したりできます。 デフォルトでは、JComboBoxのテキストフィールド部分のデータは編集できないようになっています。ユーザーに編集を許可したい場合は、setEditable(true)メソッ
-
JavaのJToggleButton実装ガイド:ON/OFF切替ボタンの作り方を解説
JToggleButtonとは JToggleButtonはAbstractButtonを拡張したクラスで、クリックするたびにONとOFFが切り替わるトグルボタンを実現するために使用されます。通常のボタンと異なり、押した状態を保持できるのが特徴です。 JToggleButtonの主な特徴 最初に押されたときは押し込まれた状態のままとなり、もう一度押してはじめて元の状態(押されていない状態)に戻ります。 ボタンが押されるたびにActionEventが発生します。 さらに、JToggleButtonはItemEventも発生させることができます。このイベントは、選択状態という概念を持つコンポー