各位大大好:请教一问题
java里有一数组 比如长度为A[32]
我想把A数组分成4个子数组,每个数组的长度为8
其中第一个数组值是A数组的A[0]-A[7]的的值
第2个数组的值是A数组的A[8]-A[15]的的值
依次类推完
想问问有什么好的方法没
我现在用的时候循环A数组,把A数组的值重新给新数组赋值一次。不知道还有更好的办法不

解决方案 »

  1.   

    你要是不喜欢循环的话,用Arrays类下面的copyOfRange方法吧,我觉得循环没啥不好的...
      

  2.   

    如果是数组长度小,用循环没什么!
    但如果数组长度为512
    要求32长度为一组,感觉用循环写起好烦琐,只是不知道和copyOfRange比较起来哪个效率更高些
    最好的情况是这样:
    当把512长度的数组传进一个函数,然后这个函数就返回被分成16个32长度的LIST出来,list里包含这16个新数组.
      

  3.   

    如果是数组长度小,用循环没什么!
    但如果数组长度为512
    要求32长度为一组,感觉用循环写起好烦琐,只是不知道和copyOfRange比较起来哪个效率更高些
    最好的情况是这样:
    当把512长度的数组传进一个函数,然后这个函数就返回被分成16个32长度的LIST出来,list里包含这16个新数组.
      

  4.   

    为啥512就繁琐了?循环存在的意义不就是为了处理这种情况的吗?如果你认为这点循环就繁琐的话,那你也太看不起现在的cpu了。追求高效也没说不让循环嘛,呵呵~~
      

  5.   

    Object[] original = {...};
    Object[] a1 = new Object[8];
    Object[] a2 = new Object[8];
    Object[] a3 = new Object[8];
    Object[] a4 = new Object[8];
    System.arraycopy(original, 0, a1, 0, 8);
    System.arraycopy(original, 8, a2, 0, 8);
    System.arraycopy(original, 16, a3, 0, 8);
    System.arraycopy(original, 24, a4, 0, 8);
      

  6.   

    Object[] original = {...}; //就是那个长度为32的数组。
      

  7.   

    呵呵,学习了!
    可能是我多想了
    想到每次都在一个循环里跑512次,总感觉怪怪的
    arraycopy也许内部实现就是循环,只是系统把封装了
    不管了,就这么说做吧
    谢谢大家
      

  8.   

    arraycopy也许内部实现就是循环,只是系统把封装了 ?是这样么?
      

  9.   


    public static native void arraycopy(Object src,  int  srcPos,
                                            Object dest, int destPos,
                                            int length);arraycopy可能是调用C语言中的memcpy()函数呢?
      

  10.   

    牛皮就是吹滴 火车就是推滴。多了就只能用循环代替arraycopy
      

  11.   

    我写了一个算法,不一定是最好的解决方案,仅供参考:http://crest-boy.livejournal.com/12918.html