将数组_块从php转换为java

将数组_块从php转换为java,java,php,Java,Php,我的php代码是: $splitArray = array_chunk($theArray,ceil(count($theArray) / 2),true); php的array\u chunk函数将数组拆分为指定大小的块。您可以在Java中通过使用Arrays.copyOfRange并传入起点和终点来实现这一点。以下是一些示例代码: /** * Chunks an array into size large chunks. * The last chunk may contain le

我的php代码是:

$splitArray = array_chunk($theArray,ceil(count($theArray) / 2),true);

php的
array\u chunk
函数将数组拆分为指定大小的块。您可以在Java中通过使用
Arrays.copyOfRange
并传入起点和终点来实现这一点。以下是一些示例代码:

/**
 * Chunks an array into size large chunks. 
 * The last chunk may contain less than size elements. 
 * @param <T>
 * @param arr The array to work on 
 * @param size The size of each chunk 
 * @return a list of arrays
 */
public static <T> List<T[]> chunk(T[] arr, int size) {

    if (size <= 0)
        throw new IllegalArgumentException("Size must be > 0 : " + size);

    List<T[]> result = new ArrayList<T[]>();

    int from = 0;
    int to = size >= arr.length ? arr.length : size;

    while (from < arr.length) {
        T[] subArray = Arrays.copyOfRange(arr, from, to);
        from = to;
        to += size;
        if (to > arr.length) {
            to = arr.length;
        }
        result.add(subArray);
    }
    return result;
}

php的
array\u chunk
函数将数组拆分为指定大小的块。您可以在Java中通过使用
Arrays.copyOfRange
并传入起点和终点来实现这一点。以下是一些示例代码:

/**
 * Chunks an array into size large chunks. 
 * The last chunk may contain less than size elements. 
 * @param <T>
 * @param arr The array to work on 
 * @param size The size of each chunk 
 * @return a list of arrays
 */
public static <T> List<T[]> chunk(T[] arr, int size) {

    if (size <= 0)
        throw new IllegalArgumentException("Size must be > 0 : " + size);

    List<T[]> result = new ArrayList<T[]>();

    int from = 0;
    int to = size >= arr.length ? arr.length : size;

    while (from < arr.length) {
        T[] subArray = Arrays.copyOfRange(arr, from, to);
        from = to;
        to += size;
        if (to > arr.length) {
            to = arr.length;
        }
        result.add(subArray);
    }
    return result;
}

Java只支持数字数组,所以您只能对没有间隙的数字数组使用。如果你需要一个解决方案来处理非数值(即地图),请发回,我会研究它

public void testMethod() {
    Object[] array={"one","two","three","four","five"};

    Object[][] chunkedArray = array_chunk(array,2);

    System.out.println(Arrays.deepToString(chunkedArray));


}

public Object[][] array_chunk(Object[] array,int size/*,FALSE Arrays are always numeric in java*/){
    Object[][] target= new Object[(array.length + size -1) / size][];

    for (int i = 0; i < target.length; i++) {
        int innerArraySize=array.length-i*size>=size?size:array.length-i*size;
        Object[] inner=new Object[innerArraySize];
        System.arraycopy(array, i*size, inner, 0, innerArraySize);
        target[i]=inner;
    }

    return target;
}
public void testMethod(){
Object[]数组={“一”、“二”、“三”、“四”、“五”};
对象[][]chunkedArray=array_chunk(数组,2);
System.out.println(array.deepToString(chunkedArray));
}
公共对象[][]数组\u块(对象[]数组,int size/*,假数组在java*/中始终为数字){
对象[][]目标=新对象[(array.length+size-1)/size]];
for(int i=0;i=size?size:array.length-i*size;
对象[]内部=新对象[innerArraySize];
System.arraycopy(数组,i*大小,内部,0,内部数组化);
目标[i]=内部;
}
回报目标;
}

Java只支持数字数组,因此您只能对没有间隙的数字数组执行此操作。如果你需要一个解决方案来处理非数值(即地图),请发回,我会研究它

public void testMethod() {
    Object[] array={"one","two","three","four","five"};

    Object[][] chunkedArray = array_chunk(array,2);

    System.out.println(Arrays.deepToString(chunkedArray));


}

public Object[][] array_chunk(Object[] array,int size/*,FALSE Arrays are always numeric in java*/){
    Object[][] target= new Object[(array.length + size -1) / size][];

    for (int i = 0; i < target.length; i++) {
        int innerArraySize=array.length-i*size>=size?size:array.length-i*size;
        Object[] inner=new Object[innerArraySize];
        System.arraycopy(array, i*size, inner, 0, innerArraySize);
        target[i]=inner;
    }

    return target;
}
public void testMethod(){
Object[]数组={“一”、“二”、“三”、“四”、“五”};
对象[][]chunkedArray=array_chunk(数组,2);
System.out.println(array.deepToString(chunkedArray));
}
公共对象[][]数组\u块(对象[]数组,int size/*,假数组在java*/中始终为数字){
对象[][]目标=新对象[(array.length+size-1)/size]];
for(int i=0;i=size?size:array.length-i*size;
对象[]内部=新对象[innerArraySize];
System.arraycopy(数组,i*大小,内部,0,内部数组化);
目标[i]=内部;
}
回报目标;
}

。你的Java代码是什么?你试过什么吗?我对此一无所知:)我不是Java程序员。你想用数组块做什么?我想这样做:$splitArray=array\u chunk($theArray,ceil(count($theArray)/2),true);壮观的你的Java代码是什么?你试过什么吗?我对此一无所知:)我不是Java程序员。你想用数组块做什么?我想这样做:$splitArray=array\u chunk($theArray,ceil(count($theArray)/2),true);类型为ArrayS的方法copyOfRange(T[],int,int)未定义,您使用的是哪个版本的java?它是被定义的。请参阅此处的文档:对于类型ArrayS,方法copyOfRange(T[],int,int)未定义您使用的java版本是什么?它是被定义的。请参见此处的文档: