سؤال

واحدة من أكبر القضايا التي تتعامل مع الانتقال من جافا .صافي هو حقيقة أن ليس هناك واجهة مجموعة في .صافي.أعرف أن هناك مكتبات يمكنني أن أذهب و تحميل ولكن ما هو سبب عدم وجود ذلك بنيت في ؟ هناك خرائط (القاموس) و القوائم ولكن لماذا لا ؟

تحرير:أود أن أوضح أن ليس كل من يستخدم .Net framework 3.5 بعد-أنا أكثر أو أقل مشيرا إلى الإصدارات القديمة من .صافي

هل كانت مفيدة؟

المحلول

واعتقد انها مجرد سهو من الكتاب BCL. الصافي 3.5 لديه HashSet الطبقة. للإصدارات السابقة، فإنني أوصي التفاف قاموس ، مع القيم الخالية في مجال القيمة، لتكرار O (1) إضافة وإزالة ووقت البحث.

نصائح أخرى

في. NET سيتم تحديثه وتعديله 4.0 HashSet لتنفيذ حتى واجهة ISet جديدة.

والصافي 3.5 لديها HashSet الذي يفعل كل عمليات المجموعة.

هل يعني HashSet ؟

ولقد HashSet<T> هناك في هذه الأيام، ولكن للأسف لا يوجد واجهة التي أنا على علم.

وكما ذكر آخرون، هناك HashSet<T>، الذي هو في الواقع مجرد مجموعة.

والسبب انها "التجزئة" أمامه (تفصيل تطبيق من مجموعة لأنه يستخدم التجزئة للقضاء على التكرارات) هو becase Set هو الكلمة في VB.NET.

ولعل المنطق هو أن مجموعة هو في الحقيقة مجرد قائمة مع تفصيل تطبيق معين يحد من العناصر الموجودة لكونها متميزة. منذ المميز من القائمة هو في التنفيذ بدلا من واجهة، ليست هناك حاجة واجهة.

وكما ذكر آخرون، وFCL لديه HashSet<T> .

كما انتقلت من جافا .صافي مؤخرا (بسبب العمالة المهنية) ويجب أن أعترف بأن أول المشاكل أيضا على مجموعات.
في الفترة الحالية .صافي الإصدار (3.5 و يتحدث عن C#) يجب توجيه نفسك على

  • ICollection
  • IList<T>
  • List<T>
  • IDictionary<TKey,TValue>
  • IEnumerable<T>

هذه هي الأكثر شيوعا (آمل ان لا يغيب واحد)

وربما بسبب اعتبارات التعليمية.

ومبرمج نموذجي يرى مجموعات كحاوية السحرية التي تعمل فقط بغض النظر عن عدد العناصر هي في ذلك.

إذا لم يكن هناك مجموعة واضحة، تضطر مبرمج للاختيار من بينها أنواع أخرى وأثناء القيام بذلك تعكس على العناصر العد وهيكل البيانات المناسبة لتحقيق أداء جيد.

ومجرد تخمين البرية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top