[ad_1]
Mengingat array dan chunkSize. Saya harus menghasilkan keluaran yang diinginkan
susunan = [1,2,3,4,5]
Ukuran potongan = 1
keluaran yang diinginkan [1] [2] [3] [4] [5]
Apa yang saya coba:
Saya telah mencoba menggunakan 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 }
Panggilan fungsi yang saya lakukan dalam metode utama sebagai:
Daftar
list.forEach(splitArray -> System.out.println(Arrays.toString(splitArray)));
Solusi 1
Mungkin ada banyak cara untuk melakukannya. Jika tidak ada masalah ruang, saya lebih suka Arrays.copyOfRange()
Di dalamnya, copyOfRange()
membuat array baru dengan tipe yang sama dengan array asli, dan berisi item dari rentang tertentu dari array asli ke dalam array baru.
Sintaksis:
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
Keterangan lebih lanjut: Metode Java.util.Arrays.copyOfRange()[^]
Contoh penggunaan:
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)))); }
Solusi 2
/****************************************************** *****************************
Selamat datang di GDB Online.
Kode, Kompilasi, Jalankan, dan Debug online dari mana saja di dunia.
******************************************************* *****************************/
import java.util.*;
kelas Utama
{
public static void main(String[] argumen) {
ke dalam[] asal = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10};
int splitUkuran = 3;
/* Hasil yang diharapkan
[0, 1, 2]
[3, 4, 5]
[6, 7, 8]
[9]
*/
Daftar
list.forEach(splitArray -> System.out.println(Arrays.toString(splitArray)));
}
Daftar statis publik
ke dalam k=0;
Daftar Array
ke dalam[] arr=batal;
int panjang=array.panjang;
int ukuran=ukuran terpisah;
for(int i=0;i
=”” }
= “” arr[k]= “susunan[i];
“k++;
=””>=Ukuran terpisah || i==array.panjang-1 ){
k=0;
hasil.tambahkan(arr);
panjang=panjang-splitUkuran;
jika(panjang
[ad_2]
コメント