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

كيف يمكنني حساب تكرار الكلمات بكفاءة في القائمة باستخدام Java 8؟

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

How can I efficiently count word frequency in a list using Java 8?

حساب تكرار الكلمات باستخدام Java 8

في تطوير الويب وتحليل البيانات، يعد فهم تكرار الكلمات أمرًا بالغ الأهمية. ولتحقيق ذلك، سنتعمق في كيفية حساب تكرار الكلمات في القائمة باستخدام Java 8.

Java 8 Solution

توفر Stream API في Java 8 حلاً أنيقًا للكلمات عد التردد. للبدء، أنشئ قائمة كلمات:

List wordsList = Lists.newArrayList("hello", "bye", "ciao", "bye", "ciao");

يتضمن المنطق الأساسي تجميع الكلمات حسب هويتها وإحصاء التكرارات:

Map collect = wordsList.stream()
    .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));

ينتج عن ذلك خريطة يكون فيها كل مفتاح كلمة فريدة، والقيمة المقابلة هي تردده. يجب أن يكون الإخراج على النحو التالي:

{ciao=2, hello=1, bye=2}

عد القيم الصحيحة

إذا كنت تحتاج إلى قيم عددية صحيحة بدلاً من القيم الطويلة، استخدم:

Map collect = wordsList.stream()
     .collect(Collectors.groupingBy(Function.identity(), Collectors.summingInt(e -> 1)));

فرز الخريطة حسب القيمة

لفرز الخريطة بناءً على القيم الموجودة في بترتيب تنازلي، استخدم:

LinkedHashMap countByWordSorted = collect.entrySet()
            .stream()
            .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))
            .collect(Collectors.toMap(
                    Map.Entry::getKey,
                    Map.Entry::getValue,
                    (v1, v2) -> {
                        throw new IllegalStateException();
                    },
                    LinkedHashMap::new
            ));

ترجع هذه الخطوة LinkedHashMap مرتبة حيث تمثل المفاتيح الكلمات، وتمثل القيم تردداتها المصنفة.

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

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

Copyright© 2022 湘ICP备2022001581号-3