0Pricing
Java Academy · درس

عمليات النطاق والتجميع

range وsum وaverage وsummaryStatistics

عمليات النطاق والتجميع درس مجاني في Java Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Java Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Java Academy 4 دروس في المجموع.

إنشاء النطاقات

ينتج IntStream.range(start, end) أعدادًا صحيحة متتالية من start حتى end، من دون تضمين end.

import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        IntStream.range(0, 5).forEach(System.out::println);
    }
}

‏rangeClosed يتضمن النهاية

تتضمن IntStream.rangeClosed(start, end) القيمة الأخيرة، لذا تنتج rangeClosed(1, 5) القيم من 1 إلى 5.

import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        int sum = IntStream.rangeClosed(1, 5).sum();
        System.out.println(sum);
    }
}

استبدال حلقات الفهارس

تُعد النطاقات بديلًا واضحًا لحلقات for المعتمدة على الفهارس عند التكرار على مواضع المصفوفة.

import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        String[] names = {"a", "b", "c"};
        IntStream.range(0, names.length)
            .forEach(i -> System.out.println(i + ": " + names[i]));
    }
}

‏sum

تجمع sum جميع العناصر وتُرجع نتيجة بدائية.

import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        int total = IntStream.rangeClosed(1, 100).sum();
        System.out.println(total);
    }
}

‏average

تُرجع average قيمة OptionalDouble لأن التدفق قد يكون فارغًا.

import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        double avg = IntStream.of(2, 4, 6, 8).average().getAsDouble();
        System.out.println(avg);
    }
}

‏min وmax

تُرجع min وmax قيمة OptionalInt. استخدموا getAsInt عندما تعلمون أن التدفق غير فارغ.

import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        int hi = IntStream.of(3, 9, 1, 7).max().getAsInt();
        int lo = IntStream.of(3, 9, 1, 7).min().getAsInt();
        System.out.println(lo + " .. " + hi);
    }
}

‏count

تُرجع count عدد العناصر على هيئة long.

import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        long n = IntStream.rangeClosed(1, 50).filter(x -> x % 3 == 0).count();
        System.out.println(n);
    }
}

‏summaryStatistics

تحسب summaryStatistics العدد والمجموع والقيمة الصغرى والمتوسط والقيمة الكبرى في مرور واحد، وتُرجع IntSummaryStatistics.

import java.util.IntSummaryStatistics;
import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        IntSummaryStatistics stats = IntStream.of(5, 10, 15, 20).summaryStatistics();
        System.out.println(stats);
    }
}

قراءة الإحصاءات الفردية

يتيح كائن الملخص الدوال getCount وgetSum وgetMin وgetMax وgetAverage.

import java.util.IntSummaryStatistics;
import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        IntSummaryStatistics s = IntStream.rangeClosed(1, 10).summaryStatistics();
        System.out.println("count=" + s.getCount());
        System.out.println("avg=" + s.getAverage());
        System.out.println("max=" + s.getMax());
    }
}

دمج النطاق والتجميع

تتوافق النطاقات وعمليات التجميع طبيعيًا: أنشئوا القيم، ثم حوّلوها، ثم اختزلوها إلى رقم واحد.

import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        int sumOfSquares = IntStream.rangeClosed(1, 4)
            .map(n -> n * n)
            .sum();
        System.out.println(sumOfSquares);
    }
}

تجميعات LongStream

توفّر LongStream دوال النطاق والتجميع نفسها، وتُرجع LongSummaryStatistics.

import java.util.stream.LongStream;

public class Main {
    public static void main(String[] args) {
        long sum = LongStream.rangeClosed(1, 1000).sum();
        System.out.println(sum);
    }
}

تحقّق سريع

ما الفرق بين range وrangeClosed؟

مراجعة

أنشأتم نطاقات بدائية ولخّصتموها:

  • لا يتضمن range قيمة النهاية، بينما يتضمنها rangeClosed.
  • التجميعات هي: sum وaverage ‏(OptionalDouble) وmin/max ‏(OptionalInt) وcount.
  • تحسب summaryStatistics كل هذه القيم في مرور واحد.

الأسئلة الشائعة

هل درس «عمليات النطاق والتجميع» مجاني؟

نعم — نص درس «عمليات النطاق والتجميع» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Java Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Java Academy 4 دروس في المجموع.

ماذا ستتعلم في «عمليات النطاق والتجميع»؟

range وsum وaverage وsummaryStatistics تتمرن على Java Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Java Academy؟

لا تُشترط خبرة سابقة. Java Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «عمليات النطاق والتجميع»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Java Academy هذا؟

نعم. كل درس في Java Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. IntStream وLongStream
  2. عمليات النطاق والتجميع
  3. التحويل من تدفقات الكائنات وإليها
  4. توليد التدفقات البدائية
← العودة إلى Java Academy