こんにちは、コンスキです。
今回はArrayListの中身をわかりやすく表示する方法をご紹介します。
ArrayListの中にある配列がprint関数で見られない問題
ArrayListの中にある配列を確認したくて、次のようにprint関数を使うことがあると思います。
int[] array1 = {1, 2, 3};
int[] array2 = {4, 5, 6};
int[] array3 = {7, 8, 9};
ArrayList<int[]> list = new ArrayList<int[]>(); //配列を入れるArrayListを用意する
list.add(array1); //ArrayListにarray1を追加する
list.add(array2); //ArrayListにarray2を追加する
list.add(array3); //ArrayListにarray3を追加する
print(list); //3つの配列が入ったArrayListを表示する
実行結果は・・・
[[I@2a209fac, [I@2e1f0e30, [I@6b1d9597]
ArrayListの中にある配列が表示されません。
本当は次のように表示されてほしいです。
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
解決法
print関数の部分を、下の濃くなっている部分に置き換えます。
import java.util.Arrays;
int[] array1 = {1, 2, 3};
int[] array2 = {4, 5, 6};
int[] array3 = {7, 8, 9};
ArrayList<int[]> list = new ArrayList<int[]>(); //配列を入れるArrayListを用意する
list.add(array1); //ArrayListにarray1を追加する
list.add(array2); //ArrayListにarray2を追加する
list.add(array3); //ArrayListにarray3を追加する
for(int i=0; i<list.size(); i++) {
if(i==0) {
print("[");
}
print(Arrays.toString(list.get(i)));
if(i<list.size()-1) {
print(", ");
} else {
print("]");
}
}
コードが少し長くなりますが、これで配列を含んだArrayListを
[[I@2a209fac, [I@2e1f0e30, [I@6b1d9597]
ではなく、
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
のように出力できると思います。
コメント