[ad_1]
نظرا للصفيف وchunkSize. لا بد لي من إنتاج الإخراج المطلوب
صفيف = [1,2,3,4,5]
حجم القطعة = 1
النتيجة المرجوة [1] [2] [3] [4] [5]
ما حاولت:
لقد حاولت استخدام 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 }
استدعاء الوظيفة الذي أقوم به في الطريقة الرئيسية على النحو التالي:
قائمة<كثافة العمليات[]> list = Chunk(Original, SplitSize);
list.forEach(splitArray -> System.out.println(Arrays.toString(splitArray)));
الحل 1
يمكن أن تكون هناك طرق متعددة للقيام بذلك. إذا لم تكن هناك مسألة المساحة، فأنا أفضل ذلك Arrays.copyOfRange()
فيه، copyOfRange()
ينشئ مصفوفة جديدة من نفس نوع المصفوفة الأصلية، ويحتوي على عناصر النطاق المحدد للمصفوفة الأصلية في مصفوفة جديدة.
بناء الجملة:
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()[^]
مثال على الاستخدام:
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)))); }
الحل 2
/****************************************************** *****************************
مرحبا بكم في جي دي بي أون لاين.
البرمجة والترجمة والتشغيل والتصحيح عبر الإنترنت من أي مكان في العالم.
*************************************************************************************************************************************************************************** ********************************/
import java.util.*;
الطبقة الرئيسية
{
الفراغ العام الثابت الرئيسي (String[] الحجج) {
كثافة العمليات[] الأصلي = {0، 1، 2، 3، 4، 5، 6، 7، 8، 9،10}؛
حجم الانقسام = 3؛
/* الناتج المتوقع
[0, 1, 2]
[3, 4, 5]
[6, 7, 8]
[9]
*/
قائمة<كثافة العمليات[]> list = SplitArray(original, SplitSize);
list.forEach(splitArray -> System.out.println(Arrays.toString(splitArray)));
}
القائمة الثابتة العامة
كثافة العمليات ك = 0؛
قائمة المصفوفات
كثافة العمليات[] arr=null;
int length=array.length;
int size=splitSize;
for(int i=0;i
=”” }
=”” آر[k]= “صفيف[i];
” ك++؛
=””>=حجم الانقسام || أنا==صفيف.طول-1){
ك=0;
result.add(arr);
length=length-splitSize;
إذا (الطول
[ad_2]
コメント