一組のMapを作成する
たけぞうさんの[Java]Mapを1行で書くを見て。
Collections.singletonMapを使えばいいんじゃないかと思った。
J2SE 1.3から導入されてるんだけど、マイナーなAPIなのかな??
個人的には、たまに使うのだけど。
という話です。ただ、1組のパラメータしかセットしない場合に
Map params = new HashMap(); params.put("customer", id); setRedirect(DetailPage.class, params);と3行も書かなきゃいけないのは面倒なので、以下のように1組のパラメータを直接渡せるメソッドもいるんじゃない?という話になりました。
setRedirect(Class clazz, String key, String value);でも「マップのままでも以下のように1行で書けますよ」というレスが。
setRedirect(DetailPage.class, new HashMap(){{put("customer", id);}});実際にこう書くかどうかは別として、その発想はなかったぜ!と思いました。
Mapを1行で書く - 新・たけぞう瀕死の日記
まあ、確かにできるけど、こうは書かないだろうってやつですね。
ちなみに、singletonMapは不変なので、可変にしたい場合は、
new HashMap(Collections.singletonMap(key, value))
のようにやったりします。うーん、冗長。。
Mapリテラル的なものを使ったほうがいいのかな。
姉妹品に、Collections.singletonListもあります。
こちらは多くの場合、Arrays.asListで代替できるから更に使わなそうですね。
Setを返すCollections.singletonは・・・そういえば、使ったことないかも。