[ad_1]
Étant donné le tableau et chunkSize. Je dois produire le résultat souhaité
tableau = [1,2,3,4,5]
taille du morceau = 1
Sortie désirée [1] [2] [3] [4] [5]
Ce que j’ai essayé :
J’ai essayé d’utiliser IntStream
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 }
L’appel de fonction que je fais dans la méthode principale comme :
Liste
list.forEach(splitArray -> System.out.println(Arrays.toString(splitArray)));
Solution 1
Il pourrait y avoir plusieurs façons de procéder. S’il n’y a pas de problème de place, je préférerais Arrays.copyOfRange()
Dans celui-ci, le copyOfRange()
crée un nouveau tableau du même type que le tableau d’origine et contient les éléments de la plage spécifiée du tableau d’origine dans un nouveau tableau.
Syntaxe:
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
Plus de détails: Méthode Java.util.Arrays.copyOfRange()[^]
Exemple d’utilisation :
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)))); }
Solution 2
/*************************************************** *****************************
Bienvenue sur GDB en ligne.
Codez, compilez, exécutez et déboguez en ligne depuis n’importe où dans le monde.
************************************************** ****************************/
importer java.util.* ;
classe principale
{
public static void main(Chaîne[] arguments) {
int[] original = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10} ;
int splitSize = 3;
/* production attendue
[0, 1, 2]
[3, 4, 5]
[6, 7, 8]
[9]
*/
Liste
list.forEach(splitArray -> System.out.println(Arrays.toString(splitArray)));
}
Liste statique publique
entier k=0 ;
ArrayList
int[] arr=nul ;
int longueur = tableau.longueur;
int taille=splitSize;
pour(int i=0;i
= “” }
= “” arr[k]=”tableau[i];
“k++;
=””>=splitTaille || je==array.length-1 ){
k = 0 ;
result.add(arr);
longueur = longueur-splitSize ;
si (longueur
[ad_2]
コメント