読者です 読者をやめる 読者になる 読者になる

文系プログラマによるTIPSブログ

文系プログラマ脳の私が開発現場で学んだ事やプログラミングのTIPSをまとめています。

【java】Listのcontainsは要素と引数の型を合わせないと意味が無い

java

物凄くつまらないというか、物凄く恥ずかしいトピックです。
Javajava.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業界に向いてないな)