誰しもがこのトラップに嵌まることでしょう。
物凄くつまらないというか、物凄く恥ずかしいトピックです。
Javaのjava.util.Listにはcontainsメソッドがあります。
リストの要素中に引数の値が含まれているかどうかを判定できるのですが、
これがしょうもない罠が潜んでいます。
↓こんなコードを書いてはいけません。
public static void main(String[] args) { Integer i = new Integer(1); List<String> list = Lists.newArrayList("1", "2", "3"); System.out.println(list.contains(i)); }
これは駄目です。これじゃ駄目なんです。falseが返ります。
containsメソッドがObject型を引数に取るが故、型の違う比較ができてしまいます。
public static void main(String[] args) { Integer i = new Integer(1); List<String> list = Lists.newArrayList("1", "2", "3"); System.out.println(list.contains(String.valueOf(i))); }
このように、ちゃんと型を合わせてあげないとtrueが返らないので注意しましょう。
(´-`).。oO(気づくのに30分かかった自分はIT業界に向いてないな)