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

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

نشر في 2025-02-06
تصفح:984

How Can I Efficiently Translate Lists to Maps Using Java 8 Streams?

ترجمة القوائم للخرائط بكفاءة باستخدام java 8 تدفقات

في Java 8 ، وهي مهمة مشتركة هي تحويل قائمة الكائنات إلى خريطة باستخدام التدفقات والامتدادات. يمكن تحقيق ذلك بطرق مختلفة ، اعتمادًا على السلوك المطلوب وتوافر مكتبات الطرف الثالث مثل الجوافة.

قائمة على الخريطة المتضمنة التكرار اليدوي وحلقة مكتوبة بخط اليد: خريطة خاصة namemap (قائمة خيارات) { الخريطة النهائية hashmap = new hashmap () ؛ لـ (اختيار الاختيار النهائي: الخيارات) { hashmap.put (choice.getName () ، الاختيار) ؛ } إرجاع hashmap. }

الحلول المستندة إلى الجوافة
private Map nameMap(List choices) {
    final Map hashMap = new HashMap();
    for (final Choice choice : choices) {
        hashMap.put(choice.getName(), choice);
    }

    return hashMap;
}
]

جوافا مع java 7 إرجاع Maps.UniqueIndex (خيارات ، وظيفة جديدة () { @تجاوز تطبيق السلسلة العامة (إدخال الاختيار النهائي) { إرجاع input.getName () ؛ } }) ؛ } الخيارات) { إرجاع maps.UniqueIndex (الخيارات ، الاختيار :: getName) ؛ }

هواة الجمع إلى الإنقاذ

يقدم فئة جامعي Java 8 تطبيقًا قويًا لقوائم رسم الخرائط. يأخذ جامع tomap وسيطتين:

private Map nameMap(List choices) {
    return Maps.uniqueIndex(choices, new Function() {

        @Override
        public String apply(final Choice input) {
            return input.getName();
        }

    });
}

في هذه الحالة ، يمكننا استخدام الاختيار :: getName و function.identity () لاسترداد المفتاح والقيمة ، على التوالي:

خريطة = choices.stream (). جمع (collectors.tomap (الاختيار :: getName ، function.identity ())) ؛

أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3