تريماب:فرز قيم الخريطة مع مفاتيح تتحرك جنبا إلى جنب مع القيم
-
23-09-2019 - |
سؤال
لدي خريطة الشجرة التالية:
TreeMap<Integer, Double> map;
القيم المزدوجة ليست فريدة من نوعها.
أنا أكرر من خلال الخريطة باستخدام مفاتيح عدد صحيح وظائف فيرستنتري () و هيغرينتري () وتعديل القيم المزدوجة.
الآن أريد أن قائمة قيم أزواج في ترتيب خفض القيم المزدوجة.ما هي أفضل طريقة للقيام بذلك?
هذه المفاتيح الصحيحة مهمة بالنسبة لي ولأن القيم المزدوجة ليست فريدة من نوعها ، لا يمكنني الحصول على مفتاح مزدوج.
تحديث:مزيد من الشرح إنها المشكلة الكلاسيكية.دعونا نقول رولنوس من الطلاب هو المفتاح ونسبتهم هي القيمة.الآن فرز حسب النسبة المئوية وبعد ذلك يجب أن نكون قادرين على معرفة من هي النسبة المئوية.لذلك أنا بحاجة إلى مفتاح عدد صحيح.
المحلول
عند إنشاء موقع باستخدام قالب ويب لا توجد تبعية من هذا الموقع إلى قالب الويب الذي تم إنشاؤه، فهذا هو أحد الاختلافات الرئيسية بين قوالب الموقع وقوالب الويب.
ولكن قد يستخدم قالب الويب ميزات مخصصة ثم قم بإنشاء تبعية بين الموقع والحل (الحلوصات) التي تحتوي على هذه الميزات.قد تأتي هذه التبعيات من حقيقة أن الميزات تحتوي على عناصر GransodicetagCode التي تصبح أحكام الملفات والموقع بعد ذلك تعتمد على هذه الملفات الموجودة في نظام الملفات طالما أن الملفات غير غير مهمة أو قد تحتوي على تعريفات قائمة.
إذا كنت تريد صفحة مخصصة وصفحة ماجستير، ولكن بدون اعتماد على الميزة، فلا يجب عليك إنشاء الصفحة والصفحة الرئيسية باستخدام التعليمات البرمجية.
نصائح أخرى
الحل الواضح هو الحصول على مجموعة من الزوجي (ربما عن طريق - فئة خريطة الشجرة لديها entrySet
ثم getValue
values()
الطريقة ، يمكنك فقط استخدام ذلك) ، والمضي قدما لفرزها (باستخدام Collections.sort
أو Arrays.sort
) - هذا من شأنه ، ومع ذلك ، تأخذ س(ن تسجيل الدخول) الوقت.
لست متأكدا من أنه يمكنك القيام بذلك بطريقة أكثر ذكاء (==أسرع) ، إلا إذا قمت بتغيير بنية البيانات تماما.ومع ذلك ، فإن الطريقة الوحيدة التي أرى هذا يحدث مع بنية بيانات أخرى هو الحفاظ على المجمع على عدد صحيح ومزدوجة وكتابة اثنين من المقارنة - واحد الذي يقارن integer
واحد الذي يقارن أولا من قبل double
ثم من قبل integer
.ستكون خريطة الشجرة الأصلية التي تستخدمها هي نفسها ولكنك ستتمكن من فصل خريطة شجرة أخرى عنها ، مرتبة حسب المقارنة الثانية.فصل لا تزال تأخذ س (ن لوغن) الوقت على الرغم من.
ما يمكنك فعله هو ما يلي: استخدم دخول للتكرار من خلال الإدخالات. ضعهم في قائمة. فرز التاريخ مع المقارنة الصحيح بعد ذلك.