【发布时间】:2010-12-27 17:01:51
【问题描述】:
在 Java 中,我想将嵌套的 List 转换为该类型的多维数组,它在最深层包含一个统一类型。例如,ArrayList<ArrayList<ArrayList<ArrayList<String>>>> 变为 String[][][][]。我已经尝试了几件事,但我只能获得像Object[][][][] 这样的对象数组。对于“简单列表”,Apache Commons Lang 似乎完成了这项工作,但我无法弄清楚嵌套案例。
更新:
为了获得 Object 类型的多维数组,我使用递归函数,因此我无法使用 toArray() 设置键类型,请参阅摘录:
// the argument of this function is a (nested) list
public static Object convert(Object object) {
Object[] result = null;
List list = (List) object;
if (list != null) {
Object type = getElementType(list);
if (type instanceof List) {
int size = list.size();
result = new Object[size];
for (int counter = 0; counter < size; counter++) {
Object element = list.get(counter);
result[counter] = (element != null) ? convert(element) : null;
}
} else {
result = list.toArray();
}
}
return result;
}
private static Object getElementType(List list) {
Object result = null;
for (Object element : list) {
if (element != null) {
result = element;
break;
}
}
return result;
}
【问题讨论】:
-
您的输入和您想要的输出都不够清晰。请分享更多关于你已经尝试过的细节。
-
@seh:OP 想要的是能够从
List<List<List<List<T>>>>创建一个T[][][][](例如),用于任何引用类型T。相反,他收到的是Object[][][][]。 -
我被这句话迷住了进入原始类型的数组列表。显然,这实际上意味着“进入原始类型的多维数组”。
-
感谢 Chris 重新表述我的问题,我已经使用 seh 的注释对其进行了编辑。
-
String是从什么时候开始的?从什么时候开始可以将原语存储在Collection中?
标签: java arrays nested multidimensional-array arraylist