Java で、int型の配列に特定の値が入っているかどうか確認するために、以下のようなコードを書いたら、意図通りに動かなかった。
int[] intArray = new int[]{0, 1, 2}; if (Arrays.asList(intArray).contains(1)) { System.out.print("Found from intArray"); // ここは出力されない。 }
デバッグしてみたところ、int型の配列に対して Arrays.asList() を適用すると、戻り値の List の最初の項目に int型の配列(全体)への参照が入ってしまうようだ。そして、List の2番目以降は存在しない。つまり、List の各項目として配列の各値が入るわけではない。(期待通りではない。)
以下のようにすると、意図通り動いた。
Integer[] intObjArray = new Integer[]{new Integer(0), new Integer(1), new Integer(2)}; if (Arrays.asList(intObjArray).contains(1)) { System.out.print("Found from intObjArray"); // ここは出力される。 }
Arrays.asList() に渡す配列は、オブジェクト型でないと、意図通りにならないのだと思う。