How to split a string array into small chunk arrays in java?

前端 未结 12 1962
春和景丽
春和景丽 2020-12-05 05:15

Below is the example of the code snippet which needs the help

Example:

[1,2,3,4,5]
  • if the chunk size is 1,
12条回答
  •  情书的邮戳
    2020-12-05 05:42

    public class ArrayChunk {
        public static void main(String[] args) {
    
            String[][] chunked = chunkArray("1,2,3,4,5,6,7,8,9".split(","), 2);
            System.out.println("Array with chunk size 2");
            Arrays.stream(chunked).forEach(strings -> System.out.println(String.join(",", strings)));
    
            chunked = chunkArray("1,2,3,4,5,6,7,8,9".split(","), 3);
            System.out.println("Array with chunk size 3");
            Arrays.stream(chunked).forEach(strings -> System.out.println(String.join(",", strings)));
    
            chunked = chunkArray("1,2,3,4,5,6,7,8,9".split(","), 4);
            System.out.println("Array with chunk size 4");
            Arrays.stream(chunked).forEach(strings -> System.out.println(String.join(",", strings)));
    
            chunked = chunkArray("1,2,3,4,5,6,7,8,9".split(","), 5);
            System.out.println("Array with chunk size 5");
            Arrays.stream(chunked).forEach(strings -> System.out.println(String.join(",", strings)));
        }
    
        private static String[][] chunkArray(String[] array, int chunkSize) {
            int chunkedSize = (int) Math.ceil((double) array.length / chunkSize); // chunked array size
            String[][] chunked = new String[chunkedSize][chunkSize];
            for (int index = 0; index < chunkedSize; index++) {
                String[] chunk = new String[chunkSize]; // small array
                System.arraycopy(array, index * chunkSize, chunk, 0, Math.min(chunkSize, array.length - index * chunkSize));
                chunked[index] = chunk;
            }
            return chunked;
        }
    }
    

    Output

    Array with chunk size 2
    1,2
    3,4
    5,6
    7,8
    9,null
    
    Array with chunk size 3
    1,2,3
    4,5,6
    7,8,9
    
    Array with chunk size 4
    1,2,3,4
    5,6,7,8
    9,null,null,null
    
    Array with chunk size 5
    1,2,3,4,5
    6,7,8,9,null
    
    

提交回复
热议问题