[ad_1]
配列とchunkSizeが与えられます。 目的の出力を生成する必要があります
配列 = [1,2,3,4,5]
チャンクサイズ = 1
希望の出力 [1] [2] [3] [4] [5]
私が試したこと:
IntStream を使用してみました
Java
public static List<int[]> chunk(int[] input, int chunkSize) { return IntStream.iterate(0, i -> i + chunkSize) .limit((long) Math.ceil((double) input.length / chunkSize)) .mapToObj(j -> Arrays.copyOfRange(input, j, j + chunkSize > input.length ? input.length : j + chunkSize)) .collect(Collectors.toList());//how to fix this line error on new }
私がメインメソッドで行っている関数呼び出しは次のとおりです。
List
list.forEach(splitArray -> System.out.println(Arrays.toString(splitArray)));
解決策 1
それを行う方法は複数ある可能性があります。 スペースの問題がなければ、私はそれを好む Arrays.copyOfRange()
その中で、 copyOfRange()
元の配列と同じ型の新しい配列を作成し、元の配列の指定された範囲の項目を新しい配列に含めます。
構文:
Java
public static T[] copyOfRange(T[] original, int from, int to) // original – the array from which a range is to be copied // from – the initial index of the range to be copied, inclusive // to – the final index of the range to be copied, exclusive
詳細: Java.util.Arrays.copyOfRange() メソッド[^]
使用例:
Java
int[] arr1 = new int[] {15, 10, 45, 55}; int chunk = 2; // provided as input for(int i=0; i<arr1.length; i+=chunk){ System.out.println(Arrays.toString(Arrays.copyOfRange(arr1, i, Math.min(arr1.length,i+chunk)))); }
[ad_2]
コメント