@doNotCheckMyBlog 提到的方法很好,但仅从标题中询问。谷歌也用这个标题标识了 n 维数组,所以我将在这里发布一个为需要它的每个人打印 n 维数组的解决方案:
该方法由两个函数构成。一个打印数组,另一个从基元和普通对象创建一个数组对象。(java.lang.ClassCastException
如果你这样做的解决方法(Object[])(new int[]{1,2,3})
)
public static String printNdimArray(Object[] in) {
String ret = "[";
for(Object obj : in ) {
if( obj.getClass().isArray() )
ret += printNdimArray( createArrayFromArrayObject(obj) );
else
ret += obj.toString();
ret += ", ";
}
ret = ret.substring(0, ret.length() - 2);
return ret +"]";
}
其他函数将对象或原始数组转换为可用于再次调用上述函数的普通对象数组,直到原始数组树的叶子。(原始代码来自:https ://stackoverflow.com/a/6427453 )
public static Object[] createArrayFromArrayObject(Object o) {
if(!o.getClass().getComponentType().isPrimitive())
return (Object[])o;
int element_count = Array.getLength(o);
Object elements[] = new Object[element_count];
for(int i = 0; i < element_count; i++)
elements[i] = Array.get(o, i);
return elements;
}
在非常大的阵列中,结构显然不再清晰,但可以通过一些调整来解决。数组中有少量对象,它看起来像这样:
out: [Mad Max: Fury Road, 7200, [600, 3600, 4000], [EN], [DE, EN, FR], sci_fi]
它在显示一维数组方面也做得很好:
out: [FR, EN, DE, CA]