Javaを使うなら必ず覚えておきたいデータ構造 - 配列・リスト・マップ

Javaを使う場合に必ず必要になるデータ構造 - 配列・リスト・マップの使い方について簡単に説明します。

配列

配列は複数件のデータを扱うためのデータ構造です。
Javaの配列の特徴は、生成時にサイズ(格納するデータの個数)を決める必要があることです。いったん配列を生成すると、後から配列のサイズを変更することはできません。

リスト

リストもまた配列と同様に、複数件のデータを扱うためのデータ構造です。
ただし、配列と異なり、リストの生成時にサイズを決める必要はありません。リストにデータを追加する度に、リストのサイズは増えていきます。

マップ

マップとは、キーに関連付けてデータを格納するデータ構造です。
マップへのデータの格納時に、キーへの関連付けを行います。そして、マップからデータ取得時に、関連づけたキーを使用します。
説明を読むより、実際に動かした方が分かりやすいと思います。

■マップ中の全てのデータに同じ処理をする。

マップ中のすべてのキーとデータに同じ処理をするには、以下のようなfor文を使用します。

for ( キーのデータ型 key : マップの名前.keySet() ) {
	データのデータ型 data = マップの名前.get( key );
	
	// keyやdataを使った処理;
}

このfor文中の「マップの名前.keySet()」はマップ中の全てのキーを返すので、全てのキーについて中括弧内の処理が繰り返されます。また、中括弧内の先頭では、キーに関連づいたデータを取得しています。
そのため、このfor文を使えばマップ中のすべてのキーとデータに同じ処理をすることができます。


例えば、キーとデータの関連付けをすべて表示するには、以下のように書きます。

for ( String key : map.keySet() ) {
	String data = map.get( key );
	
	System.out.println( key + ": " + data );
}

これは、以下のように書いた場合と同じような結果になります。ただし、map.keySet()が返すキーの順序は決まっていないので、表示順序が異なることがあります。

System.out.println( "apple: " + map.get( "apple" ) ); => apple: 緑
System.out.println( "greap: " + map.get( "greap" ) ); => greap: 紫
System.out.println( "strawberry: " + map.get( "strawberry" ) ); => strawberry: 赤
System.out.println( "pear: " + map.get( "pear" ) ); => pear: 緑
System.out.println( "lemon: " + map.get( "lemon" ) ); => lemon: 黄