栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

是否可以在Java中动态构建多维数组?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

是否可以在Java中动态构建多维数组?

实际上可以在Java中完成。(我必须说我有些惊讶。)

免责声明;除了解决这个问题,我再也不想在其他任何地方看到此代码了。我强烈建议您使用

List

import java.lang.reflect.Array;import java.util.*;public class Test {    public static int[] tail(int[] arr) {        return Arrays.copyOfRange(arr, 1, arr.length);    }    public static void setValue(Object array, String value, int... indecies) {        if (indecies.length == 1) ((String[]) array)[indecies[0]] = value;        else setValue(Array.get(array, indecies[0]), value, tail(indecies));    }    public static void fillWithSomevalues(Object array, String v, int... sizes) {        for (int i = 0; i < sizes[0]; i++) if (sizes.length == 1)     ((String[]) array)[i] = v + i; else     fillWithSomevalues(Array.get(array, i), v + i, tail(sizes));    }    public static void main(String[] args) {        // Randomly choose number of dimensions (1, 2 or 3) at runtime.        Random r = new Random();        int dims = 1 + r.nextInt(3);        // Randomly choose array lengths (1, 2 or 3) at runtime.        int[] sizes = new int[dims];        for (int i = 0; i < sizes.length; i++) sizes[i] = 1 + r.nextInt(3);        // Create array        System.out.println("Creating array with dimensions / sizes: " +     Arrays.toString(sizes).replaceAll(", ", "]["));        Object multiDimArray = Array.newInstance(String.class, sizes);        // Fill with some         fillWithSomevalues(multiDimArray, "pos ", sizes);        System.out.println(Arrays.deepToString((Object[]) multiDimArray));    }}

示例输出:

Creating array with dimensions / sizes: [2][3][2][[[pos 000, pos 001], [pos 010, pos 011], [pos 020, pos 021]], [[pos 100, pos 101], [pos 110, pos 111], [pos 120, pos 121]]]


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/407008.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号