Javaの罠 Part1(Map.containsKey/containsValue)

プログラミングコンテストにてハマったことのある罠をご紹介します.
Mapについて.

使う頻度の多い,Map.containsKey(Object)とMap.containsValue(Object).
これらは,引数がgenericsに対応していないため,うっかりしていると変なオブジェクトを引数にしてしまい,死にます.

HashMap<String, Integer> map=new HashMap<String, Integer>();
map.put("hoge", 314);
if(map.containsValue("hoge")){ // あー!あー!あーーーーー!
  System.out.println("<(。ε゜)>");
}

エラーがでないため(TreeMap.containsKeyでは,Comparableを実装していないと例外を出す),ぱっと見では気が付きません.冷静さが大事です.