البحث الرئيسي في هذه المقالة هو المحتوى ذي الصلة لـ ENUMMAP بدلاً من الفهرس الترتيبي في Java ، والذي يتم تقديمه على النحو التالي.
يلاحظ الدراسة "java java ashines edition 2"
غالبًا ما يتم مواجهته باستخدام الطريقة الترتيبية لـ ENUM لفهرسة أنواع التعداد.
الطبقة العامة Herb {type public enum type {السنوي ، المعمر ، كل سنتين} ؛ اسم السلسلة النهائية الخاصة ؛ نوع النوع النهائي الخاص ؛ HERB (اسم السلسلة ، اكتب النوع) {this.name = name ؛ this.type = type ؛ } Override Public String ToString () {return name ؛ }}لنفترض الآن أن هناك مجموعة من الأعشاب التي تمثل النباتات في حديقة ترغب في تنظيمها حسب النوع (السنوي أو الدائم أو كل سنتين) قبل إدراج هذه النباتات. إذا كنت ترغب في القيام بذلك ، فأنت بحاجة إلى إنشاء ثلاث مجموعات ، واحدة لكل نوع ، وتكرر عبر الحديقة بأكملها ووضع كل عشب في المجموعة المقابلة. يقوم بعض المبرمجين بذلك عن طريق وضع هذه المجموعات في صفيف مفهرسة بأرقام ترتيبية من الأنواع.
// باستخدام Ordinal () لفهرسة صفيف - لا تفعل thisherb [] Garden = ... ؛ // مفهرسة بواسطة herb.type.ordinal () set <herb> [] herbsbytype = (set <merb> []) مجموعة جديدة [herb.type.values (). الطول] ؛ لـ (int i = 0 ؛ i <herbsbytype.length ؛ i ++) {herbsbytype [i] = new hashset <merb> () ؛} for (herb h: garden) {herbsbytype [h.type.ordinal ()]. add (h) ؛} system.out.printf ("٪ s: ٪ s ٪ n" ، herb.type.values () [i] ، herbsbytype [i]) ؛}هذه الطريقة ممكنة بالفعل ، لكنها تخفي العديد من المشاكل. لأن المصفوفات غير متوافقة مع الأدوية الجيلية. يحتاج البرنامج إلى إجراء تحويلات غير محددة ولا يمكن تجميعها بشكل صحيح. نظرًا لأن الصفيف لا يعرف ما يمثله فهرسه ، يجب عليك تصنيف إخراج هذه الفهارس يدويًا. لكن المشكلة الأكثر خطورة في هذه الطريقة هي أنه عند الوصول إلى صفيف يفهرسه الرقم الترتيبي التعويضي ، تقع على عاتقك مسؤولية استخدام القيمة الصحيح ؛ لا يمكن أن يوفر السلامة من النوع للعوامل. إذا كنت تستخدم القيمة الخاطئة ، فسيقوم البرنامج بإكمال العمل الخاطئ بهدوء ، أو إذا كنت محظوظًا ، فسوف يلقي استثناء ArrayIndExoutofBoundException .
Java.Util.Enummap هو تطبيق خريطة سريع للغاية يستخدم خصيصًا للتعداد.
// باستخدام enummap لربط البيانات مع enummap <herb.type ، تعيين <herb >> herbsbytype = new enummap <herb.type ، set <herb >> (herb.type.class) ؛ لـ (herb.type t: herb.type.values) herbsbytype.put (t ، hashset new <herb> ()) ؛ لـ (Herb H: Garden) Herbsbytype.get (H.Type) .add (H) ؛ System.out.println (Herbsbytype) ؛
هذا البرنامج أقصر وأكثر وضوحًا وأكثر أمانًا ، ويمكن أن يعمل بسرعة مماثلة لبرامج البرامج التي تستخدم الأرقام الترتيبية. ليس لديها تحويلات غير آمنة. ليس من الضروري تسمية إخراج هذه الفهارس يدويًا ، لأن مفاتيح التعيين تعرف كيفية ترجمة نفسها إلى تعداد للسلاسل القابلة للطباعة ؛ من المستحيل أيضًا ارتكاب أخطاء عند حساب فهارس الصفيف . السبب في أن ENUMMAP قابلة للمقارنة مع المصفوفات المفهرسة من خلال الفهارس الترتيبية من حيث سرعة التشغيل هو أن ENUMMAP يستخدم هذه الصفيف داخليًا. لكنه يخفي هذا النوع من تفاصيل التفكير من المبرمجين ، ويجمع بين الوظائف الغنية للخريطة ونوع السلامة مع سرعة المصفوفات. لاحظ أن مُنشئ ENUMMAP يستخدم كائن فئة نوع المفاتيح: هذا رمز محدود من النوع الذي يوفر معلومات عامة وقت التشغيل.
لخص
ما سبق هو كل التفسير التفصيلي لـ Enummap بدلاً من رمز الفهرس الترتيبي في Java. آمل أن يكون ذلك مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى الموضوعات الأخرى ذات الصلة على هذا الموقع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!