我有一个可以是n维的Object []的对象,我需要将它转换为具有相同表示的n嵌套列表,即[] [] []变为ArrayList>>。我通过变量知道运行时n的大小。另一个需要注意的是,在添加到“最低”列表之前,必须处理“最低”数组中的对象;不能仅仅复制对象。这是一维数组的简单情况
Object array; // argument
List<Object> list = new ArrayList<Object>();
for(Object o : (Object[])array) {
list.add(process(o));
}
这个例子没有考虑尺寸,因此对于简单的情况“只是工作”,但在复杂情况下失败。如何以通用方式处理n-case?
答案 0 :(得分:1)
Object process(Object possibleArray) {
if (possibleArray instanceof Object[]) { // is array
Object[] array = (Object[]) possibleArray;
List<Object> list = new ArrayList<Object>(array.length);
for(Object o : array) {
list.add(process(o));
}
return list;
} else {
return possibleArray;
}
}