配列いろいろ
■ 配列の内容を出力するには
* Arrays.deepToString() を使うObject[] values = ...; Arrays.deepToString(values);
■ 配列かどうか判定するには
* getClass().isArray() で判定するObject value = ...; if (value.getClass().isArray()) { System.out.println("配列である"); } else { System.out.println("配列でない"); }
■ 2次配列以上かどうか判定するには
* getClass().getComponentType()とisArray()を組み合わせるObject value = ...; if (value.getClass().isArray()) { if (value.getClass.getComponentType().isArray()) { System.out.println("2次配列である"); } else { System.out.println("1次配列である"); } } else { System.out.println("配列でない"); }
API仕様
* isArray() : この Class オブジェクトが配列クラスを表すかどうかを判定 'http://docs.oracle.com/javase/jp/6/api/java/lang/Class.html#isArray()
* getComponentType() : 配列のコンポーネント型を表す Class を返す。このクラスが配列クラスを表さない場合、このメソッドは null を返す '
http://docs.oracle.com/javase/jp/6/api/java/lang/Class.html#getComponentType()
■ ArrayList <=> 配列に変換するには
* Listとの相互変換については、以下の関連記事を参照のことhttp://blogs.yahoo.co.jp/dk521123/32156111.html
サンプル
import java.util.Arrays; public class ArrayUtil { public static void main(String[] args) { String[] target1Values = new String[] { "test1", "test2" }; System.out.println(ArrayUtil.getArrayString(target1Values)); System.out.println("target1Values : " + ArrayUtil.isArray(target1Values)); System.out.println("Dimentsion of target1Values : " + ArrayUtil.getDimensionNumber(target1Values)); System.out.println(); String target2Value = "test"; System.out.println("target2Value : " + ArrayUtil.isArray(target2Value)); System.out.println("Dimentsion of target2Value : " + ArrayUtil.getDimensionNumber(target2Value)); System.out.println(); String[][] target3Values = new String[][] { { "test1-1", "test1-2" }, { "test2-1", "test2-2" } }; System.out.println(ArrayUtil.getArrayString(target3Values)); System.out.println("target3Values : " + ArrayUtil.isArray(target3Values)); System.out.println("Dimentsion of target3Values : " + ArrayUtil.getDimensionNumber(target3Values)); System.out.println(); String[][][][] target4Values = new String[][][][] { { { { "aaa", "bbb" }, { "ccc", "ddd" }, { "eee", "fff" } }, { { "ggg", "hhh" }, { "iii", "jjj" }, { "kkk", "lll" } } }, { { { "mmm", "nnn" }, { "ooo", "ppp" }, { "qqq", "rrr" } }, { { "sss", "ttt" }, { "uuu", "vvv" }, { "www", "xxx" } } }, { { { "yyy", "zzz" }, { "AAA", "BBB" }, { "CCC", "DDD" } }, { { "EEE", "FFF" }, { "GGG", "HHH" }, { "III", "JJJ" } } }, { { { "KKK", "LLL" }, { "MMM", "NNN" }, { "OOO", "PPP" } }, { { "QQQ", "RRR" }, { "SSS", "TTT" }, { "UUU", "VVV" } } } }; System.out.println(ArrayUtil.getArrayString(target4Values)); System.out.println("target4Values : " + ArrayUtil.isArray(target4Values)); System.out.println("Dimentsion of target4Values : " + ArrayUtil.getDimensionNumber(target4Values)); } public static String getArrayString(Object[] values) { return Arrays.deepToString(values); } public static boolean isArray(Object value) { if (value == null) { return false; } return value.getClass().isArray(); } public static int getDimensionNumber(Object value) { if (!ArrayUtil.isArray(value)) { return 0; } int dimensionNumber = 1; return ArrayUtil.getDimensionNumber(value.getClass().getComponentType(), dimensionNumber); } private static int getDimensionNumber(Class<?> targetClass, Integer dimensionNumber) { if (targetClass == null || !targetClass.isArray()) { return dimensionNumber; } dimensionNumber = dimensionNumber + 1; return ArrayUtil.getDimensionNumber(targetClass.getComponentType(), dimensionNumber); } }
出力結果
[test1, test2] target1Values : true Dimentsion of target1Values : 1 target2Value : false Dimentsion of target2Value : 0 [[test1-1, test1-2], [test2-1, test2-2]] target3Values : true Dimentsion of target3Values : 2 [[[[aaa, bbb], [ccc, ddd], [eee, fff]], [[ggg, hhh], [iii, jjj], [kkk, lll]]], [[[mmm, nnn], [ooo, ppp], [qqq, rrr]], [[sss, ttt], [uuu, vvv], [www, xxx]]], [[[yyy, zzz], [AAA, BBB], [CCC, DDD]], [[EEE, FFF], [GGG, HHH], [III, JJJ]]], [[[KKK, LLL], [MMM, NNN], [OOO, PPP]], [[QQQ, RRR], [SSS, TTT], [UUU, VVV]]]] target4Values : true Dimentsion of target4Values : 4