クラスライブラリを攻略「ユーティリティ編」基礎から学ぶサーブレット/JSP(8)(2/5 ページ)

» 2003年09月09日 00時00分 公開
[山田祥寛@IT]

人に優しい連想配列を取得する―HashMapクラス―

 Javaが標準的に提供する配列は、aryVal[0]、aryVal[1]、・・・のように数値をキーとしたものです。順番に要素にアクセスする場合など、これはこれで便利なのですが、人間の目から見た場合には、どうしても連番のような無機的な情報は扱いにくいというケースがあります。

 そのような場合、HashMapクラスを利用して、キーに任意のオブジェクト(文字列を含む)を採用した連想配列を使うと便利です。連想配列は意味ある情報(データ)を連番キーの代わりに用いることができますので、特に要素内にランダムなアクセスを行いたいという場合には非常な効果を発揮します。

 ここでは、HashMapクラスに格納されたキー/値セットを順番に取り出すサンプルを介して、HashMapクラスの基本的な操作方法を学んでみることにします。

リスト4 map.jsp
<%@ page contentType="text/html;charset=Shift_JIS" import="java.util.*" %>
<table border="1">
<tr>
<th>キー名</th><th>値</th>
</tr>
<%
HashMap objMap=new HashMap();
objMap.put("ASP.NET","Active Server Page .NET");
objMap.put("PHP",    "PHP: Hypertext Preprocessor")
;
objMap.put("JSF",    "JavaServer Faces")
;
Object[] objKey=objMap.keySet().toArray();
for(int i=0;i<objKey.length;i++){
%>
  <tr>
    <td><%=objKey[i]%></td>
    <td><%=objMap.get(objKey[i])%></td>
  </tr>
<%
}
%>
</table>

連想配列の中身を順に表示します 連想配列の中身を順に表示します

ロジックの概要

 HashMap#putメソッドは、第1引数に指定された値をキーに、第2引数の値をセットします。連想配列の中身の要素順は、必ずしもputメソッドでセットされた順番になるとは「限りません」ので、注意してください。HashMapクラスは要素順の管理を行いません。

 keySetメソッドはHashMapオブジェクトに格納されたキーの一覧をSetオブジェクトとして返します。ここではそのSetオブジェクトをtoArrayメソッドでObject配列に変換します。

 Object配列を取得してしまえば、後はカンタン。例のように、forループで順に要素にアクセスし、キー情報と値を出力するだけです。連想配列の中身にアクセスするのは、HashMap#getメソッドの役割です。

連想配列は、キー情報を文字列のようなオブジェクトを介して表現することができます。特に配列内の要素にランダムにアクセスしたいという場合、こうした意味あるキーを持つということは、非常に便利です。


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。