我记得以前看到过这么一个说法,就是创建多维数组的时候,数组维列的顺序对java性能有影响。
如int[][][] temp = new int[10][100][1000];
顺序为10、100、1000,我忘记了是大数在前面还是大数在后面好来着,为什么这样好?
各位大虾帮忙解决下。

解决方案 »

  1.   

    因为你多维数组必不可少的就是给数组赋值,也就是要循环,所以你的问题就转换为for循环的优化。比如你的这个3维数组 按照你的顺序:for(10)
       for(100)
           for(1000)这样第一层循环10次,第二层10*100,第三层10*100*1000,总计10+1000+1000000换一种:
    for(1000)
       for(100)
           for(10)
    这样总计是1000+1000*100+10*100*1000  哪个好 你能看出来了吧?
      

  2.   

    有这种说法吗
    数组归根结底是对象类型
    创建的元素都是放到堆内存里new int[10][100][1000]; 
    new int[1000][100][10]; 
    无非是此消彼长的问题吧
    有何好与不好的区别呢
      

  3.   

    如果 int[10][100][1000],可以用int[1000][100][10]替换,说明你要的不是三维数组。为什么不用int[1000000]替换?
      

  4.   

    int[10][100][1000]和int[1000][100][10]这两种结构的查找速度方面哪个来得快一点?
    如我要找a[8][8][8]这个数据,哪种速度更快?
      

  5.   

    楼上的哥们吵的很火啊,哈哈。我的观点是这个和JVM的底层实现有关,如果真的要去探讨,你就要去研究JVM的实现机制(大部分都是C++代码),并不是靠个人猜测。
      

  6.   

    我觉得不是大家说的遍历效率的问题,重要的是你想要什么样的逻辑。
    如果你要的逻辑就是int[10][100][1000],那么如果你定义成int[1000][100][10]就肯定用不了。
    反过来说,如果是大家说的遍历效率的问题,那干嘛非得定义成int[10][100][1000]?直接定义成int[10*100*1000]不就完了么?