n维数组到n嵌套列表

时间:2016-07-04 10:45:47

标签: java recursion arraylist multidimensional-array

我有一个可以是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?

1 个答案:

答案 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;
    }
}