戯言

つらつらと気づいたことを書いていきます。人狼とか。

スポンサーサイト


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

commons.collectionsの便利なメソッドと、ジェネリクス対応


org.apache.commons.collections15.MultiMap


本家のApacheCommonsのcommons.collectionsはJDK下位互換を維持しているらしく、JDK1.5から導入されたジェネリクスに対応していない。そのため、JDK1.5以上を使って開発していると、Eclipse上でジェネリクスに関する警告が出たりして、なんだか気持ち悪い。

そこで、対処方法を探してみたら、commons.collectionsをジェネリクス化したライブラリを見つけました。
これ。
http://sourceforge.net/projects/collections/

これのMultiMapを人狼では使用しています。
標準のHashMapだと、1つのkeyに対して1つのvalueのみが格納でき、当然同一keyのオブジェクトを複数格納することはできません。
しかし、このMultiMapは同じkeyのオブジェクトを複数格納することができます。

以下は、key(hn◆trip)に対して、value(称号)を格納、取出するサンプルプログラムです。
1つのkey(hn◆trip)が複数の称号を持つことはありえるので、MultiMapを使っています。

keyに対するvalueを取り出す場合の返り値は、当然複数の値となるのでCollectionをとります。

import org.apache.commons.collections15.MultiMap;
import org.apache.commons.collections15.multimap.MultiHashMap;

MultiMap<String, Integer> titleDataList = new MultiHashMap<String, Integer>();

// 格納
while(rs.next()){
	String key = rs.getString("HN") + "◆" + rs.getString("TRIP");
	int val = rs.getInt("title_code");
	titleDataList.put(key, val);
}

// 取出
Collection<Integer> titles = titleDataList.get(hn + "◆" + trip);
スポンサーサイト
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。