沈样 发表于 2012-2-25 16:04
我觉得有个方法可以判断,不知道对不对请指教, java每个类都来自于object,在这个类中有个toString()的方 ...
你的想法太有创意了! 用toString(),“跟具(根据)返回"["就可以知道这个几维数组”。我原先据此写了个方法dim 得到数组维数,后发现只用一语句也行:- public class Test {
- static int dim(Object obj){
- int i=0,index=0;
- while((index=obj.toString().indexOf("[",index))!=-1){
- i++; index++;
- }
- return i;
- }
- public static void main(String[] args) throws Exception
- {
- int[] a1 = new int[] { 12, 12, 34 };
- Integer[] aa = new Integer[] { 12, 12, 34 };
- Integer[][] a2 = new Integer[][] { { 12, 34 }, { 112, 12, 34 } };
- int[][][] a5 ={ {{ 12, 34 }}, {{ 112, 12, 34 }} };
- String[] a3 = new String[] { "asd", "lhm", "zxx", "bxd" };
- String[][] a4 = new String[][] { { "asd", "lhm", "zxx", "bxd" },{ "asd", "lhm", "zxx", "bxd" } };
- List[] list ={Arrays.asList(aa),Arrays.asList(a3)};
-
- System.out.println(dim(a5));
- System.out.println(a5.toString().split("\\[").length-1); //这样一语句可得维数
- }
- }
复制代码 arr.toString().split("\\[").length-1,就得到维数了(对 List[] 也行),够简洁吧,当然效率、兼容性未知,请大家讨论。 |