"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية تحويل قائمة الكائنات بكفاءة إلى اختيارية في تدفقات Java؟

كيفية تحويل قائمة الكائنات بكفاءة إلى اختيارية في تدفقات Java؟

تم النشر بتاريخ 2024-11-07
تصفح:982

How to Efficiently Convert List of Objects to Optional in Java Streams?

الإيجاز مع Java 8's الاختياري و Stream::flatMap

عند العمل مع تدفقات Java 8، تحويل قائمة إلى اختياري واستخراج القيمة الأخرى الأولى بكفاءة يمكن أن يمثل تحديًا. بينما تتطلب flatMap عادةً تدفقًا عائدًا، فإن غياب الدفق () للاختياري يزيد الأمور تعقيدًا.

حل Java 16

يقدم Java 16 Stream.mapMulti، مما يتيح المزيد نهج موجز:

Optional result = things.stream()
    .map(this::resolve)
    .mapMulti(Optional::ifPresent)
    .findFirst();

حل Java 9

يضيف JDK 9 تيارًا اختياريًا، مما يبسط المهمة:

Optional result = things.stream()
    .map(this::resolve)
    .flatMap(Optional::stream)
    .findFirst();

حل Java 8]

في Java 8، يمكن اتباع النهج التالي:

Optional result = things.stream()
    .map(this::resolve)
    .flatMap(o -> o.isPresent() ? Stream.of(o.get()) : Stream.empty())
    .findFirst();
استخدام وظيفة مساعدة للتحويل اختياري إلى دفق:

static  Streamstreamopt(Optional opt) {
    إذا (opt.isPresent())
        إرجاع Stream.of(opt.get());
    آخر
        إرجاع Stream.empty();
}

نتيجة اختيارية  = Things.stream ()
    .flatMap(t ->streamopt(resolve(t)))
    .findFirst();
بيان الافراج أعيد طبع هذه المقالة على: 1729667949 في حالة وجود أي انتهاك، يرجى الاتصال بـ [email protected] لحذفها
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3